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 <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)); }
private TryResult Try( IBotOperation operation, ExecutionContext context, CancellationToken token) { try { base.InnerBot.Execute(operation, context, token); return(TryResult.Succeeded()); } catch (Exception exception) { if (base.Configuration.HandlesException(exception)) { return(TryResult.Failed(exception)); } throw; } }
private TryResult <TResult> Try( IBotOperation <TResult> operation, ExecutionContext context, CancellationToken token) { try { var result = base.InnerBot.Execute(operation, context, token); return(this.HandleResult(result)); } catch (Exception exception) { if (base.Configuration.HandlesException(exception)) { return(TryResult <TResult> .Failed(exception)); } throw; } }
private async Task <TryResult> TryAsync( IAsyncBotOperation operation, ExecutionContext context, CancellationToken token) { try { await base.InnerBot.ExecuteAsync(operation, context, token) .ConfigureAwait(context.BotPolicyConfiguration.ContinueOnCapturedContext); return(TryResult.Succeeded()); } catch (Exception exception) { if (base.Configuration.HandlesException(exception)) { return(TryResult.Failed(exception)); } throw; } }
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()); } }
private TryResult <TResult> HandleResult(TResult result) => base.Configuration.AcceptsResult(result) ? TryResult <TResult> .Succeeded(result) : TryResult <TResult> .Failed(result : result);