From e62bc2a6f28f6a7b7fcb3996e9fab86fae3239f7 Mon Sep 17 00:00:00 2001 From: Alexander Lantsev Date: Mon, 24 Feb 2014 17:38:35 +0000 Subject: Dropbox: - added ability to send files to contacts of other protocols - many other little improvements git-svn-id: http://svn.miranda-ng.org/main/trunk@8263 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Dropbox/src/dropbox.cpp | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'plugins/Dropbox/src/dropbox.cpp') diff --git a/plugins/Dropbox/src/dropbox.cpp b/plugins/Dropbox/src/dropbox.cpp index 9bbee6b9f5..41c53d22a4 100644 --- a/plugins/Dropbox/src/dropbox.cpp +++ b/plugins/Dropbox/src/dropbox.cpp @@ -9,6 +9,8 @@ void CDropbox::Init() HookEvent(ME_OPT_INITIALISE, OnOptionsInit); HookEvent(ME_SYSTEM_MODULESLOADED, CDropbox::OnModulesLoaded); + HookEvent(ME_DB_CONTACT_DELETED, CDropbox::OnContactDeleted); + HookEvent(ME_CLIST_PREBUILDCONTACTMENU, CDropbox::OnPrebuildContactMenu); CreateProtoServiceFunction(MODULE, PS_GETCAPS, CDropbox::ProtoGetCaps); CreateProtoServiceFunction(MODULE, PSS_FILE, CDropbox::ProtoSendFile); @@ -16,11 +18,18 @@ void CDropbox::Init() InitIcons(); InitMenus(); + + INSTANCE->hContactTransfer = 0; } +MCONTACT CDropbox::hContactDefault = 0; + MCONTACT CDropbox::GetDefaultContact() { - return db_find_first(MODULE); + if (!hContactDefault) + hContactDefault = db_find_first(MODULE); + + return hContactDefault; } bool CDropbox::HasAccessToken() @@ -41,9 +50,17 @@ void CDropbox::RequestAcceessToken(MCONTACT hContact) CDropbox::TokenRequestProc, (LPARAM)&request_token) == IDOK) { + char data[1024]; + mir_snprintf( + data, + SIZEOF(data), + Translate("grant_type=authorization_code&code=%s"), + request_token); + HttpRequest *request = new HttpRequest(hNetlibUser, REQUEST_POST, DROPBOX_API_URL "/oauth2/token"); - request->AddParameter("grant_type", "authorization_code"); - request->AddParameter("code", request_token); + request->pData = mir_strdup(data); + request->dataLength = strlen(data); + request->AddHeader("Content-Type", "application/x-www-form-urlencoded"); request->AddBasicAuthHeader(DROPBOX_API_KEY, DROPBOX_API_SECRET); NETLIBHTTPREQUEST *response = request->Send(); @@ -52,7 +69,7 @@ void CDropbox::RequestAcceessToken(MCONTACT hContact) if (response) { - if (response->resultCode == HttpStatus::OK) + if (response->resultCode == HTTP_STATUS::OK) { JSONNODE *root = json_parse(response->pData); if (root != NULL) @@ -122,9 +139,9 @@ void CDropbox::RequestApiAuthorizationAsync(void *arg) TranslateT("Request athorization"), MB_YESNO | MB_ICONQUESTION) == IDYES) { - Singleton::GetInstance()->DestroyAcceessToken(hContact); - Singleton::GetInstance()->RequestAcceessToken(hContact); + INSTANCE->DestroyAcceessToken(hContact); + INSTANCE->RequestAcceessToken(hContact); } else - Singleton::GetInstance()->RequestAcceessToken(hContact); + INSTANCE->RequestAcceessToken(hContact); } \ No newline at end of file -- cgit v1.2.3