public FhirResponse GetFhirResponse(Entry entry, object input) { var parameters = ConvertInput(input); if (parameters == null) { return(null); } var matchTags = parameters.IfNoneMatchTags.Any() ? parameters.IfNoneMatchTags.Any(t => t == ETag.Create(entry.Key.VersionId).Tag) : (bool?)null; var matchModifiedDate = parameters.IfModifiedSince.HasValue ? parameters.IfModifiedSince.Value < entry.Resource.Meta.LastUpdated : (bool?)null; if (!matchTags.HasValue && !matchModifiedDate.HasValue) { return(null); } return((matchTags ?? true) && (matchModifiedDate ?? true) ? Respond.WithCode(HttpStatusCode.NotModified) : null); }
public void Configure(IEndpointRouteBuilder builder) => builder .MapGet(string.Empty, context => { var readModel = context.RequestServices.GetRequiredService <InMemoryReadModel>(); var hasValue = readModel.TryGetValue <ReadModel>( nameof(ChartOfAccounts), out var entry); var statusCode = hasValue ? HttpStatusCode.OK : HttpStatusCode.NotFound; var response = new HalResponse(context.Request, new ChartOfAccountsRepresentation(), ETag.Create(entry?.Item.Checkpoint ?? Optional <Position> .Empty), hasValue ? new Optional <object>(entry?.Item !) : Optional <object> .Empty);
//public static HttpResponseMessage HttpResponse(this HttpRequestMessage request, HttpStatusCode code, Entry entry) //{ // request.SaveEntry(entry); // HttpResponseMessage msg; // msg = request.CreateResponse<Resource>(code, entry.Resource); // // DSTU2: tags // //msg.Headers.SetFhirTags(entry.Tags); // return msg; //} public static void AcquireHeaders(this HttpResponseMessage response, FhirResponse fhirResponse) { // http.StatusCode = fhir.StatusCode; if (fhirResponse.Key != null) { response.Headers.ETag = ETag.Create(fhirResponse.Key.VersionId); Uri location = fhirResponse.Key.ToUri(); if (response.Content != null) { response.Content.Headers.ContentLocation = location; if (fhirResponse.Resource != null && fhirResponse.Resource.Meta != null) { response.Content.Headers.LastModified = fhirResponse.Resource.Meta.LastUpdated; } } else { response.Headers.Location = location; } } }
public FhirResponse GetFhirResponse(Interaction interaction, object input) { ConditionalHeaderParameters parameters = ConvertInput(input); if (parameters == null) { return(null); } bool?matchTags = parameters.IfNoneMatchTags.Any() ? parameters.IfNoneMatchTags.Any(t => t == ETag.Create(interaction.Key.VersionId).Tag) : (bool?)null; bool?matchModifiedDate = parameters.IfModifiedSince.HasValue ? parameters.IfModifiedSince.Value < interaction.Resource.Meta.LastUpdated : (bool?)null; if (!matchTags.HasValue && !matchModifiedDate.HasValue) { return(null); } if ((matchTags ?? true) && (matchModifiedDate ?? true)) { return(Respond.WithCode(HttpStatusCode.NotModified)); } return(null); }
private static string CreateEtag(FileInfo fileInfo) { return(ETag.Create(fileInfo.FullName, fileInfo.Length, fileInfo.LastWriteTimeUtc.Ticks)); }
public static void UsePurchaseOrders(this IEndpointRouteBuilder builder, PurchaseOrderRepository purchaseOrders) { builder .MapGet(string.Empty, async context => { var orders = await purchaseOrders.List(context.RequestAborted); return(new HalResponse(context.Request, PurchaseOrderListRepresentation.Instance, ETag.Create(orders.Max(x => x.Position)), new Optional <object>(orders))); }) .MapPost(string.Empty, async(HttpContext context, PurchaseOrder purchaseOrder) => { if (purchaseOrder.PurchaseOrderId == Guid.Empty) { purchaseOrder.PurchaseOrderId = Guid.NewGuid(); } await purchaseOrders.Save(purchaseOrder, context.RequestAborted); return(new HalResponse(context.Request, PurchaseOrderRepresentation.Instance, ETag.Create(purchaseOrder.Version), purchaseOrder) { StatusCode = HttpStatusCode.Created, Headers = { Location = new Uri(purchaseOrder.PurchaseOrderId.ToString()) } }); }) .MapGet("{purchaseOrderId:guid}", async context => { if (!context.TryParseGuid(nameof(PurchaseOrder.PurchaseOrderId), out var purchaseOrderId)) { return(new HalResponse(context.Request, PurchaseOrderRepresentation.Instance) { StatusCode = HttpStatusCode.NotFound }); } var order = await purchaseOrders.Get(purchaseOrderId, context.RequestAborted); return(new HalResponse(context.Request, PurchaseOrderRepresentation.Instance, ETag.Create(order.HasValue ? order.Value.Position : new long?()), order) { StatusCode = order.HasValue ? HttpStatusCode.OK : HttpStatusCode.NotFound }); }) .MapPut("{purchaseOrderId:guid}", async(HttpContext context, PurchaseOrder purchaseOrder) => { if (!context.TryParseGuid(nameof(purchaseOrder.PurchaseOrderId), out var purchaseOrderId)) { return(new HalResponse(context.Request, PurchaseOrderRepresentation.Instance) { StatusCode = HttpStatusCode.NotFound }); } purchaseOrder.PurchaseOrderId = purchaseOrderId; await purchaseOrders.Save(purchaseOrder, context.RequestAborted); return(new HalResponse(context.Request, PurchaseOrderRepresentation.Instance, ETag.Create(purchaseOrder.Version), purchaseOrder)); }) .MapBusinessTransaction <PurchaseOrder>("{purchaseOrderId:guid}"); }