public async Task InvokeAsync(IHttpOperationContext context)
        {
            if (context.HttpResponse != null && !context.Result.IsDataOrErrorModified)
            {
                context.HttpResponse.EnsureSuccessStatusCode();

                if (!_resultParsers.TryGetValue(
                        context.Operation.ResultType,
                        out IResultParser? resultParser))
                {
                    context.Result.AddError(
                        ErrorBuilder.New()
                        .SetMessage(
                            "There is no result parser registered for " +
                            $"`{context.Operation.ResultType.FullName}`.")
                        .SetCode(ErrorCodes.NoResultParser)
                        .Build());
                }
                else
                {
                    using (var stream = await context.HttpResponse.Content.ReadAsStreamAsync()
                                        .ConfigureAwait(false))
                    {
                        await resultParser.ParseAsync(
                            stream, context.Result, context.RequestAborted)
                        .ConfigureAwait(false);
                    }
                }
            }

            await _next(context);
        }
Example #2
0
 private static Task ThrowExceptionMiddleware(
     IHttpOperationContext context)
 {
     if (!context.Result.IsDataOrErrorModified)
     {
         throw new InvalidOperationException(
                   "The operation was not be handled by any middleware.");
     }
     return(Task.CompletedTask);
 }
Example #3
0
        public async Task InvokeAsync(IHttpOperationContext context)
        {
            if (context.HttpResponse is null)
            {
                context.HttpResponse = await context.Client.SendAsync(
                    context.HttpRequest, context.RequestAborted)
                                       .ConfigureAwait(false);
            }

            await _next(context);
        }
Example #4
0
        public async Task InvokeAsync(IHttpOperationContext context)
        {
            if (context.HttpRequest is null)
            {
                context.HttpRequest = new HttpRequestMessage(
                    HttpMethod.Post, context.Client.BaseAddress);

                _formatter.Serialize(context.Operation, context.MessageWriter, _options);

                context.HttpRequest.Content = context.MessageWriter.ToByteArrayContent();
                context.HttpRequest.Content.Headers.Add(
                    WellKnownHeaders.ContentTypeJson.Name,
                    WellKnownHeaders.ContentTypeJson.Value);
            }

            await _next(context);
        }
        public async Task InvokeAsync(IHttpOperationContext context)
        {
            if (context.HttpResponse != null && !context.Result.IsDataOrErrorModified)
            {
                context.HttpResponse.EnsureSuccessStatusCode();

                using (var stream = await context.HttpResponse.Content.ReadAsStreamAsync()
                                    .ConfigureAwait(false))
                {
                    await context.ResultParser.ParseAsync(
                        stream, context.Result, context.RequestAborted)
                    .ConfigureAwait(false);
                }
            }

            await _next(context).ConfigureAwait(false);
        }
Example #6
0
        public async Task InvokeAsync(IHttpOperationContext context)
        {
            if (context.HttpResponse != null && context.Result is null)
            {
                context.HttpResponse.EnsureSuccessStatusCode();

                // TOOD : throw error if not exists
                IResultParser resultParser = _resultParsers[context.Operation.ResultType];

                using (var stream = await context.HttpResponse.Content.ReadAsStreamAsync()
                                    .ConfigureAwait(false))
                {
                    context.Result = await resultParser.ParseAsync(
                        stream, context.RequestAborted)
                                     .ConfigureAwait(false);
                }
            }

            await _next(context);
        }
Example #7
0
        public async Task InvokeAsync(IHttpOperationContext context)
        {
            if (context.HttpRequest is null)
            {
                context.HttpRequest = new HttpRequestMessage(
                    HttpMethod.Post, context.Client.BaseAddress);

                using (var stream = new MemoryStream())
                {
                    await _serializer.SerializeAsync(
                        context.Operation, null, true, stream)
                    .ConfigureAwait(false);

                    context.HttpRequest.Content = new ByteArrayContent(
                        stream.ToArray());
                    context.HttpRequest.Content.Headers.Add(
                        "Content-Type", "application/json");
                }
            }

            await _next(context);
        }
 public async Task InvokeAsync(IHttpOperationContext context)
 {
     try
     {
         await _next(context).ConfigureAwait(false);
     }
     catch (HttpRequestException ex)
     {
         context.Result.ClearAll();
         context.Result.AddError(
             ErrorBuilder.FromException(ex)
             .SetCode(ErrorCodes.Http)
             .Build());
     }
     catch (Exception ex)
     {
         context.Result.ClearAll();
         context.Result.AddError(
             ErrorBuilder.FromException(ex)
             .SetCode(ErrorCodes.Unexpected)
             .Build());
     }
 }