示例#1
0
        /// <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();
        }
示例#3
0
        /// <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;
 }
示例#6
0
        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;
        }
示例#7
0
        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;
        }
示例#8
0
        /// <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;
        }
示例#9
0
        /// <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);
        }
示例#10
0
        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;
        }
示例#11
0
        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;
        }
示例#12
0
        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;
        }