private async Task <T?> GetGraphQL <T>(GqlQuery query, CancellationToken token) where T : class { string parsedQuery = query.ParseToJsonString(DateParsingStrategy.NoSeparators); StringContent stringContent = new StringContent(parsedQuery, Encoding.UTF8, "application/json"); Uri uri = new Uri(DefaultGqlRequestUrl); try { HttpResponseMessage response = await _client.PostAsync(uri, stringContent, token).ConfigureAwait(false); if (response == null || !response.IsSuccessStatusCode) { return(null); } T?result = await UnwrapGqlResposne <T>(response, token).ConfigureAwait(false); return(result); } catch (Exception ex) when(ex is HttpRequestException || ex is COMException || ex is OperationCanceledException) { System.Diagnostics.Debug.WriteLine($"Failed to unwrap GQL. Exception: {ex}"); return(null); } }
private async Task <T> GetGraphQLAsync <T>(GqlQuery query, CancellationToken token = default(CancellationToken)) { string parsedQuery = query.ParseToJsonString(DateParsingStrategy.NoSeparators); StringContent stringContent = new StringContent(parsedQuery, Encoding.UTF8, " application/json"); Uri uri = new Uri(DefaultGqlRequestUrl); try { HttpResponseMessage response = await _httpClient.PostAsync(uri, stringContent, token).ConfigureAwait(false); if (response == null || !response.IsSuccessStatusCode) { Console.WriteLine("No response or non-success received from server."); return(default);
private async Task <ApiResult <T> > GetGraphQLAsync <T>(GqlQuery query, CancellationToken token = default(CancellationToken)) { string parsedQuery = query.ParseToJsonString(DateParsingStrategy.NoSeparators); HttpStringContent stringContent = CreateJsonStringContent(parsedQuery); Uri uri = new Uri(DefaultGqlRequestUrl); try { HttpResponseMessage response = await _networkClient.PostAsync(uri, stringContent, token).ConfigureAwait(false); if (response == null || !response.IsSuccessStatusCode) { LogHttpFailure(response).DoNotAwait(); if (response?.StatusCode == HttpStatusCode.ServiceUnavailable) { return(ApiResult <T> .FailWithReason(FailureReason.ServerDown)); } else { return(ApiResult <T> .Fail); } } T result = await UnwrapGqlResposne <T>(response).ConfigureAwait(false); return(new ApiResult <T>(result)); } catch (Exception ex) when(ex is HttpRequestException || ex is COMException || ex is OperationCanceledException) { if (ex is OperationCanceledException) { return(ApiResult <T> .FailWithReason(FailureReason.Canceled)); } else { LogException(ex); return(ApiResult <T> .FailWithReason(FailureReason.NoConnection)); } } }