public static void MaybeEnvelope <T>(this HttpResponse response, HttpRequest request, JsonConversionOptions options, IPage <T> data, IList <Error> errors, out object body) { var provider = request.HttpContext.RequestServices.GetService <IPagingInfoProvider>(); if (FeatureRequested(request, options.EnvelopeOperator)) { var envelope = new EnvelopeCollectionBody <T> { Data = data, Status = response.StatusCode, Headers = response.Headers, Errors = errors, HasErrors = errors?.Count > 0 }; body = envelope; if (provider != null) { envelope.Paging = provider.GetPagingInfo(request, data); } response.StatusCode = (int)HttpStatusCode.OK; return; } provider?.SetPagingInfoHeaders(request, response, data); body = new NestedCollectionBody <T> { Data = data, Errors = errors, HasErrors = errors?.Count > 0 }; }
public static void MaybeEnvelope <T>(this HttpResponse response, HttpRequest request, JsonConversionOptions options, IStream <T> data, IList <Error> errors, out object body) { if (FeatureRequested(request, options.EnvelopeOperator)) { body = new EnvelopeCollectionBody <T> { Data = data, Status = response.StatusCode, Headers = response.Headers, Errors = errors, HasErrors = errors?.Count > 0 }; } else { body = new NestedCollectionBody <T> { Data = data, Errors = errors, HasErrors = errors?.Count > 0 }; } response.StatusCode = (int)HttpStatusCode.OK; }
static async Task ExecuteFeature(HttpContext c, JsonConversionOptions o, Func <Task> next) { var qs = c.Request.Query; qs.TryGetValue(o.MultiCaseOperator, out var values); foreach (var value in values) { foreach (var entry in c.RequestServices.GetServices <ITextTransform>()) { if (!entry.Name.Equals(value, StringComparison.OrdinalIgnoreCase)) { continue; } c.Items[Constants.ContextKeys.JsonMultiCase] = entry; goto next; } } next: await next(); }