public IActionResult Collect([FromHeader] string appId, [FromHeader] string appKey) { if (this.customTelemetryService.CheckTelemetryKey(appId, appKey)) { string requestbody = Request.GetRawBodyStringAsync().Result; Guid telemetryId = this.customTelemetryService.RecordTelemetry(requestbody, appId); List <RequestPayload> payloads = telemetryRetrievalService.GetRequestPayloadById(telemetryId); telemetryHubContext.Clients.All.ReceiveMessage(new Dto.MessageEnvelope(payloads.Count.ToString() + " request payloads delivered to telemetry service.")); foreach (var item in payloads) { telemetryHubContext.Clients.All.ReceiveMessage(new Dto.MessageEnvelope(item.TelemetryApplicationId + " responded with " + item.ResponseCode + " to a request that took " + item.Duration.TotalMilliseconds + " ms to complete on server " + item.ServerName)); telemetryHubContext.Clients.All.ReceiveDatapoint(new Dto.AppDatapoint(item.ServerName, item.TelemetryApplicationId, item.Name, item.Duration.TotalMilliseconds)); } var acceptedResponse = new AcceptedResponse(); acceptedResponse.itemsAccepted = 1; acceptedResponse.itemsReceived = 1; acceptedResponse.errors = new List <string>(); var result = new JsonResult(acceptedResponse); result.StatusCode = 200; return(result); } else { string requestbody = Request.GetRawBodyStringAsync().Result; this.customTelemetryService.LogRejectedTelemetry(appId, appKey, requestbody, "Application key incorrect"); var acceptedResponse = new AcceptedResponse(); acceptedResponse.itemsAccepted = 0; acceptedResponse.itemsReceived = 0; acceptedResponse.errors = new List <string>(); acceptedResponse.errors.Add("Cannot process due to incorrect key."); var result = new JsonResult(acceptedResponse); result.StatusCode = 403; return(result); } }
public async Task <IActionResult> ProcessRequest(string name, Func <CommandBase> func, IAsyncCollector <Message> messages) { try { var cmd = func(); await messages.AddAsync(cmd.Message); var response = new AcceptedResponse(cmd.EventType, cmd.EventTypeVersion); return(new AcceptedResult(new Uri(name, UriKind.Relative), response)); } catch (Exception) { return(new BadRequestObjectResult(new ErrorResponse("Failed to process request."))); } }
private static async Task <IActionResult> ProcessRequest(Func <Task <WineCommandBase> > func, IAsyncCollector <Message> messages) { try { var cmd = await func(); await messages.AddAsync(cmd.Message); var response = new AcceptedResponse(cmd.WineId, cmd.Version); return(new AcceptedResult(new Uri($"wines/{response.Id}", UriKind.Relative), response)); } catch (Exception) { return(new BadRequestObjectResult(new ErrorResponse(null, 0, "Failed to process request."))); } }
public void AcceptResponse(AcceptedResponseFormData formData) { AcceptedResponse acceptedOffer = new AcceptedResponse(); acceptedOffer.CallerId = formData.CallerId; acceptedOffer.ChosenResponseId = formData.ResponseId; acceptedOffer.ChosenOfferId = formData.OfferId; acceptedOffer.ChosenOrderId = formData.OrderId; var order = _context.Orders.Include(o => o.Responses).FirstOrDefault(o => o.Id == formData.OrderId); order.OrderStatus = OrderStatus.InProgress; foreach (var response in order.Responses) { response.ResponseStatus = ResponseStatus.Rejected; } order.Responses.FirstOrDefault(r => r.Id == formData.ResponseId).ResponseStatus = ResponseStatus.Accepted; //var acceptedResponse = _context.Responses.FirstOrDefault(r => r.Id == formData.ResponseId); //acceptedResponse.ResponseStatus = ResponseStatus.Accepted; _context.AcceptedResponses.Add(acceptedOffer); _context.SaveChanges(); }