示例#1
0
        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);
            }
        }
示例#2
0
        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);
示例#3
0
        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));
                }
            }
        }