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; }
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); }