/// <summary> /// Queries ESI to PUT new data. /// </summary> /// <typeparam name="T">The type of the response.</typeparam> /// <param name="request">The ESI request to make.</param> /// <param name="data">The POST data to be included in the request.</param> /// <returns>The data from the ESI request.</returns> public async Task <EsiResult <T> > QueryEsiPutAsync <T>(EsiRequestHeaders request, HttpContent content) { request.ThrowIfNull(nameof(request)); content.ThrowIfNull(nameof(content)); return(await QueryEsiAsync <T>(HttpMethod.Put, request, content).ConfigureAwait( false)); }
/// <summary> /// Queries ESI to send a request. /// </summary> /// <typeparam name="T">The type of the response.</typeparam> /// <param name="method">The HTTP method to use when making the request.</param> /// <param name="request">The ESI request to make.</param> /// <param name="content">The content to send with the request.</param> /// <returns>The data from the ESI request.</returns> private async Task <EsiResult <T> > QueryEsiAsync <T>(HttpMethod method, EsiRequestHeaders request, HttpContent content = null) { string url = await request.GetESIUrlAsync(Language).ConfigureAwait(false); var message = new HttpRequestMessage(method, url); if (content != null) { // Update content type if requested string contentType = request.ContentType.GetAttributeOfType < DescriptionAttribute>()?.Description; if (contentType != null && content.Headers != null) { content.Headers.ContentType.MediaType = contentType; } message.Content = content; } EsiResult <T> esiResult; // If previous request expiration is available, add ETag/If-Modified-Since request.CacheInfo?.AddRequestHeaders(message.Headers); try { using (var response = await client.SendAsync(message).ConfigureAwait(false)) { esiResult = await HandleResponseAsync <T>(response); } } catch (IOException e) { // I/O errors become EsiResultStatus.NetworkError esiResult = new EsiResult <T>(EsiResultStatus.NetworkError, default(T), e); } catch (TimeoutException e) { // Time outs become EsiResultStatus.NetworkError esiResult = new EsiResult <T>(EsiResultStatus.NetworkError, default(T), e); } catch (OperationCanceledException e) { // Cancellations become EsiResultStatus.NetworkError esiResult = new EsiResult <T>(EsiResultStatus.NetworkError, default(T), e); } return(esiResult); }
/// <summary> /// Queries ESI for GET response data. /// </summary> /// <typeparam name="T">The type of the response.</typeparam> /// <param name="request">The ESI request to make.</param> /// <returns>The data from the ESI request.</returns> public async Task <EsiResult <T> > QueryEsiGetAsync <T>(EsiRequestHeaders request) { request.ThrowIfNull(nameof(request)); return(await QueryEsiAsync <T>(HttpMethod.Get, request).ConfigureAwait(false)); }