public async Task <ResultResponseMessage <ResponseMessage> > QueuesAsync(RequestMessage request) { IEnumerable <SampleMessage> samplesMessages = new List <SampleMessage>(); try { var samplesModelListResult = await SampleService.GetToSendQueueAsync(); samplesMessages = SampleMessageMapper.FromModel(samplesModelListResult.Models); if (samplesMessages.Any()) { await SendToQueue(samplesMessages, request.GetHeader(Headers.Protocol)); } var result = new ResultResponseMessage <ResponseMessage>(request); var responseMessage = new ResponseMessage(); responseMessage.AddHeader("Queued-Total", samplesMessages.Count().ToString()); result.SetReturn(responseMessage); result.CreateResponseAccepted(); return(result); } catch { await SampleService.UndoSendQueueAsync(samplesMessages.Select(it => it.IdSample)); throw; } }
public static ResultResponseMessage ToResultResponseMessage <TRequestMessage>(this IModelResult modelResult, TRequestMessage requestMessage) where TRequestMessage : RequestMessage { var result = new ResultResponseMessage(requestMessage); if (!modelResult.IsModelResultValid()) { result.MapResultResponseMessage((HttpStatusCode)modelResult.ModelStatusCode, modelResult.Message); } return(result); }
private void ExecuteValidationInArgument <TRequestMessage>(ActionExecutingContext context, TRequestMessage requestMessage) where TRequestMessage : RequestMessage { Configure.SetProtocolToRequest(context, requestMessage); Configure.SetOriginIp(context); Configure.SetOriginDevice(context); Configure.SetCustomHeaders(context, requestMessage); var result = new ResultResponseMessage <ResponseMessage>(requestMessage); if (requestMessage == null) { result.CreateResponseBadRequest("The request cannot be null."); context.Result = result; return; } if (context.ModelState.IsValid) { return; } foreach (KeyValuePair <string, ModelStateEntry> kvp in context.ModelState) { string key = kvp.Key.Split('.').LastOrDefault(); ModelStateEntry value = kvp.Value; if (value.Errors == null || !value.Errors.Any()) { continue; } var errorMessage = value.Errors.First().ErrorMessage; key = char.ToLowerInvariant(key[0]) + key.Substring(1); if (string.IsNullOrWhiteSpace(errorMessage) || errorMessage.ToLower().Contains("field is required")) { result.AddValidation(key, "The field " + key + " is required"); } else { result.AddValidation(key, value.Errors.FirstOrDefault()?.ErrorMessage); } } result.CreateResponseBadRequest("Fields Validation"); context.Result = result; }
private async Task HandleExceptionAsync(HttpContext context, Exception ex) { if (ex is AggregateException) { ex = ex.InnerException; } var errorMessage = ViewDetailsOnResponse ? ex.ToString() : Messages.ErrorDefault; var protocol = context.Request.Headers[Headers.Protocol].ToString(); if (string.IsNullOrWhiteSpace(protocol) || !Guid.TryParse(protocol, out Guid protocolParsed)) { protocol = Guid.NewGuid().ToString("N"); if (string.IsNullOrWhiteSpace(protocol)) { context.Request.Headers.Add(Headers.Protocol, protocol); } else { context.Request.Headers[Headers.Protocol] = protocol; } } var requestMessage = new RequestMessage(); requestMessage.AddHeader(Headers.Protocol, protocol); var result = new ResultResponseMessage(requestMessage); result.CreateResponseInternalServerError(errorMessage); var jsonResult = JsonSerializer.Serialize(result, new JsonSerializerOptions { IgnoreNullValues = true, Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping }); context.Response.ContentType = "application/json"; context.Response.StatusCode = (int)result.HttpStatusCode; await context.Response.WriteAsync(jsonResult); }
public static ResultResponseMessage ToResultResponseMessage <TRequestMessage, TModel>(this IModelResult <TModel> modelResult, TRequestMessage requestMessage) where TRequestMessage : RequestMessage where TModel : IModel { var result = new ResultResponseMessage(requestMessage); if (!modelResult.IsModelResultValid()) { if (modelResult.Validations != null) { foreach (var validation in modelResult.Validations) { result.AddValidation(validation.Attribute, validation.Message); } } result.MapResultResponseMessage((HttpStatusCode)modelResult.ModelStatusCode, modelResult.Message); } return(result); }