示例#1
0
 public GoogleDriveService(GoogleOAuth2.ClientIdentifier clientIdentifier, GoogleOAuth2.Token savedToken)
 {
     clientId        = clientIdentifier;
     authToken       = savedToken;
     mapFileIds      = new Dictionary <string, string>();
     currentState    = ((savedToken == null) || !savedToken.IsValidForRefresh()) ? EState.NotAuthorized : EState.NotInitialized;
     lastApiResponse = null;
 }
示例#2
0
        private async Task <Reply> HandleRequest(string method, string requestUri, params string[] requestBody)
        {
            Reply result = new Reply();

            result.bIsSuccessful = false;

            currentState = EState.AuthInProgress;

            GoogleOAuth2.Token activeToken = await GoogleOAuth2.GetAuthorizationToken(clientId, authToken);

            if (activeToken != null && activeToken.IsValidForAuth())
            {
                authToken    = activeToken;
                currentState = EState.NoErrors;

                HttpWebRequest request = WebRequest.CreateHttp(requestUri);
                request.Method = method;
                request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + authToken.accessToken);
                SetRequestContent(request, requestBody);

                WebResponse rawResponse = null;
                try
                {
                    rawResponse = await request.GetResponseAsync();
                }
                catch (WebException ex)
                {
                    lastApiResponse = ex.Message;
                }
                catch (Exception ex)
                {
                    lastApiResponse = "Exception: " + ex;
                }

                HttpWebResponse response = (HttpWebResponse)rawResponse;
                result.response = response;

                if (response != null)
                {
                    lastApiResponse = response.StatusDescription;
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        string responseBody = null;
                        if (response.ContentLength > 0)
                        {
                            byte[] contentBytes  = new byte[response.ContentLength];
                            Stream contentStream = response.GetResponseStream();
                            contentStream.Read(contentBytes, 0, contentBytes.Length);
                            contentStream.Close();

                            responseBody = Encoding.UTF8.GetString(contentBytes);
                        }

                        result.bIsSuccessful = true;
                        result.contentBody   = responseBody;
                    }
                }
            }
            else
            {
                currentState = EState.NotAuthorized;
            }

            return(result);
        }