public static async Task <TryResult <T> > TryExecuteAndReadResponse <T>(this Task <HttpResponseMessage> send, string httpMethod, string url, AhkResult ahkResult, bool allowNotFound = false, Predicate <HttpResponseMessage> responseAdditionalCheck = null) { var requestMethodAndUrl = $"{httpMethod.ToUpperInvariant()} {url}"; HttpResponseMessage responseMessage; try { responseMessage = await send; } catch (Exception ex) { ahkResult.AddProblem(ex, $"{requestMethodAndUrl} keres sikertelen. {requestMethodAndUrl} request unsuccessful."); return(TryResult <T> .Failed()); } if (responseAdditionalCheck != null) { if (!responseAdditionalCheck(responseMessage)) { return(TryResult <T> .Failed()); } } if (allowNotFound && responseMessage.StatusCode == System.Net.HttpStatusCode.NotFound) { return(TryResult <T> .Ok(default(T))); } return(await responseMessage.TryReadResponse <T>(ahkResult)); }
public static async Task <TryResult <TResult> > TryReadResponse <TResult>(this HttpResponseMessage httpResponse, AhkResult ahkResult) { var requestMethodAndUrl = $"{httpResponse.RequestMessage.Method.Method.ToUpperInvariant()} {httpResponse.RequestMessage.RequestUri}"; if (!httpResponse.IsSuccessStatusCode) { ahkResult.AddProblem($"{requestMethodAndUrl} hibas valaszkod {httpResponse.StatusCode}. {requestMethodAndUrl} yields invalid response {httpResponse.StatusCode}."); return(TryResult <TResult> .Failed()); } try { var value = await httpResponse.Content.ReadAsAsync <TResult>(); if (value == null) { ahkResult.AddProblem($"{requestMethodAndUrl} valasz tartalma hibas. {requestMethodAndUrl} yields invalid content."); return(TryResult <TResult> .Failed()); } return(TryResult <TResult> .Ok(value)); } catch (Exception ex) { ahkResult.AddProblem(ex, $"{requestMethodAndUrl} valasz tartalma hibas. {requestMethodAndUrl} yields invalid content."); return(TryResult <TResult> .Failed()); } }
public static async Task <TryResult <bool> > TryDelete(this HttpClient httpClient, string url, AhkResult ahkResult) { var requestMethodAndUrl = $"DELETE {url}"; try { var responseMessage = await httpClient.DeleteAsync(url); if (responseMessage.StatusCode == System.Net.HttpStatusCode.OK || responseMessage.StatusCode == System.Net.HttpStatusCode.NoContent) { return(TryResult <bool> .Ok(true)); } else { return(TryResult <bool> .Ok(false)); } } catch (Exception ex) { ahkResult.AddProblem(ex, $"{requestMethodAndUrl} keres sikertelen. {requestMethodAndUrl} request unsuccessful."); return(TryResult <bool> .Failed()); } }