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);
     }
 }
Beispiel #2
0
        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.")));
            }
        }
Beispiel #3
0
        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.")));
            }
        }
Beispiel #4
0
        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();
        }