/// <summary> /// Gets the account info of the current logged in user /// </summary> /// <returns></returns> public async Task<AccountInfo> AccountInfo(CancellationToken cancellationToken) { var requestUrl = MakeRequestString("1/account/info", ApiType.Base); var request = new HttpRequest(HttpMethod.Get, requestUrl); var response = await SendAsync<AccountInfo>(request, cancellationToken); return response; }
private static object EncodeParameters(HttpRequest request) { var querystring = new StringBuilder(); foreach (var p in request.Parameters) { if (querystring.Length > 1) { querystring.Append("&"); } querystring.AppendFormat("{0}={1}", p.Name.UrlEncode(), (p.Value.ToString()).UrlEncode()); } return querystring.ToString(); }
/// <summary> /// Auth Step 3. Once a Request Token has been authorized convert it to an access token for API usage. /// </summary> /// <returns></returns> public async Task<UserLogin> GetAccessToken() { var requestUrl = MakeRequestString("1/oauth/access_token", ApiType.Base); var request = new HttpRequest(HttpMethod.Get, requestUrl); _oauthHandler.Authenticate(request); var response = await _httpClient.SendAsync(request); string responseBody = await response.Content.ReadAsStringAsync(); UserLogin = GetUserLoginFromParams(responseBody); SetUserToken(UserLogin); return UserLogin; }
/// <summary> /// Builds up the oauth parameters and updated the request Uri /// </summary> /// <param name="request"></param> /// <returns></returns> public HttpRequest Authenticate(HttpRequest request) { request.AddParameter("oauth_version", "1.0"); request.AddParameter("oauth_nonce", GenerateNonce()); request.AddParameter("oauth_timestamp", GenerateTimeStamp()); request.AddParameter("oauth_signature_method", SignatureMethod); request.AddParameter("oauth_consumer_key", ApiKey); if (!string.IsNullOrEmpty(UserToken)) { request.AddParameter("oauth_token", UserToken); } request.Parameters.Sort(new QueryParameterComparer()); request.AddParameter("oauth_signature", GenerateSignature(request)); //Now build the real Url var data = EncodeParameters(request); var url = string.Format("{0}?{1}", request.RequestUri, data); request.RequestUri = new Uri(url); //Does it need to do this? return request; }
private string GenerateSignature(HttpRequest request) { return ApiSecret + "&" + UserSecret; }
private HttpRequest MakeGetFileRequest(string path) { var requestUrl = MakeRequestString(string.Format("1/files/{0}/{1}", Root, path.CleanPath()), ApiType.Content); var request = new HttpRequest(HttpMethod.Get, requestUrl); _oauthHandler.Authenticate(request); return request; }
private HttpRequest MakeThumbnailRequest(string path, ThumbnailSize size) { var requestUrl = MakeRequestString(string.Format("1/thumbnails/{0}/{1}", Root, path.CleanPath()), ApiType.Content); var request = new HttpRequest(HttpMethod.Get, requestUrl); request.AddParameter("size", ThumbnailSizeString(size)); _oauthHandler.Authenticate(request); return request; }
/// <summary> /// Gets the oauth2 token for current logged in user /// </summary> /// <returns></returns> public async Task<string> GetOAuth2Token(CancellationToken cancellationToken) { var requestUrl = MakeRequestString("1/oauth2/token_from_oauth1", ApiType.Base); var request = new HttpRequest (HttpMethod.Post, requestUrl); var response = await SendAsync<OAuth2TokenResponse>(request, cancellationToken); return response.Token; }
/// <summary> /// Disables the access token used to authenticate the call. /// This method works for OAuth 1 and OAuth 2 tokens. /// </summary> public async Task DisableAccessToken(CancellationToken cancellationToken) { var requestUrl = MakeRequestString("1/disable_access_token", ApiType.Base); var request = new HttpRequest(HttpMethod.Post, requestUrl); await SendAsync(request, cancellationToken); }
private HttpRequest MakeChunkedUploadCommitRequest(string path, string filename, string uploadId) { var requestUrl = MakeRequestString(string.Format("1/commit_chunked_upload/auto/{0}{2}{1}", path.CleanPath(), filename, path.CleanPath().Length > 0 ? "/" : ""), ApiType.Content); var request = new HttpRequest(HttpMethod.Post, requestUrl); request.AddParameter("upload_id", uploadId); _oauthHandler.Authenticate(request); return request; }
private HttpRequest MakeChunkedUploadPutRequest(long offset, string uploadId = null) { var requestUrl = MakeRequestString(string.Format("1/chunked_upload"), ApiType.Content); var request = new HttpRequest(HttpMethod.Put, requestUrl); if (!String.IsNullOrEmpty(uploadId)) { request.AddParameter("upload_id", uploadId); } request.AddParameter("offset", offset); _oauthHandler.Authenticate(request); return request; }
private HttpRequest MakeUploadPutRequest(string path, string filename, string parentRevision) { var requestUrl = MakeRequestString(string.Format("1/files_put/{0}/{1}/{2}", Root, path.CleanPath(), filename), ApiType.Content); var request = new HttpRequest(HttpMethod.Put, requestUrl); _oauthHandler.Authenticate(request); if (!string.IsNullOrEmpty(parentRevision)) request.AddParameter("parent_rev", parentRevision); return request; }