Esempio n. 1
0
        /// <exception cref="ApiException"></exception>
        public static async Task ThrowIfNotSuccessedAsync(HttpResponseMessage responseMessage)
        {
            if (responseMessage.IsSuccessStatusCode)
            {
                return;
            }

            //TODO: 可以处理404等ProblemDetails的返回
            ErrorCode?errorCode = await responseMessage.DeSerializeJsonAsync <ErrorCode>().ConfigureAwait(false);

            responseMessage.Dispose();

            if (errorCode == null)
            {
                throw ApiExceptions.ServerUnkownError(response: responseMessage);
            }
            else
            {
                throw ApiExceptions.ServerReturnError(errorCode);
            }
        }
Esempio n. 2
0
        /// <exception cref="System.ApiException"></exception>
        public static async Task <TResponse?> SendAsync <TResource, TResponse>(this HttpClient httpClient, ApiRequest <TResource> request) where TResource : ApiResource where TResponse : class
        {
            using HttpRequestMessage requestMessage = request.ToHttpRequestMessage();

            if (request is FileUpdateRequest <TResource> fileUpdateRequest)
            {
                requestMessage.Content = BuildMultipartContent(fileUpdateRequest);
            }

            using HttpResponseMessage responseMessage = await httpClient.SendCoreAsync(requestMessage, request).ConfigureAwait(false);

            await ThrowIfNotSuccessedAsync(responseMessage).ConfigureAwait(false);

            if (typeof(TResponse) == _emptyResponseType)
            {
                return((TResponse)(object)EmptyResponse.Value);
            }
            else
            {
                TResponse?response = await responseMessage.DeSerializeJsonAsync <TResponse>().ConfigureAwait(false);

                return(response);
            }
        }