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));
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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;
            }
        }
Example #5
0
        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());
            }
        }
Example #7
0
 private TryResult <TResult> HandleResult(TResult result) =>
 base.Configuration.AcceptsResult(result) ? TryResult <TResult> .Succeeded(result) : TryResult <TResult> .Failed(result : result);