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); }
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); }
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); }
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); }
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); }
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()); } }