/// <summary> /// </summary> /// <param name="obj"></param> /// <param name="settings"></param> /// <returns></returns> public static string ToJson(object obj, JsonSerializerSettings settings) { var options = new AutoWrapperOptions(); var jsonSettings = JSONHelper.GetJSONSettings(options.IgnoreNullValue, options.ReferenceLoopHandling, options.UseCamelCaseNamingStrategy); return(JsonConvert.SerializeObject(obj, settings ?? jsonSettings)); }
public async Task AutoWrapperModelValidations_Test() { var builder = new WebHostBuilder() .ConfigureServices(services => { services.Configure <ApiBehaviorOptions>(options => { options.SuppressModelStateInvalidFilter = true; }); services.AddMvcCore(); }) .Configure(app => { app.UseApiResponseAndExceptionWrapper <MapResponseObject>(); app.Run(context => context.Response.WriteAsync( new ApiResponse("customMessage.", "Test", 200).ToJson())); }); var server = new TestServer(builder); var req = new HttpRequestMessage(HttpMethod.Get, ""); var rep = await server.CreateClient().SendAsync(req); var content = await rep.Content.ReadAsStringAsync(); Convert.ToInt32(rep.StatusCode).ShouldBe(200); var options = new AutoWrapperOptions(); var jsonSettings = JSONHelper.GetJSONSettings <MapResponseObject>(options.IgnoreNullValue, options.ReferenceLoopHandling, options.UseCamelCaseNamingStrategy); var json = JsonHelper.ToJson(new ApiResponse("customMessage.", "Test", 0, null), jsonSettings.Settings); content.ShouldBe(json); }
public WrapperBase(RequestDelegate next, AutoWrapperOptions options, ILogger <AutoWrapperMiddleware> logger, IActionResultExecutor <ObjectResult> executor) { _next = next; _options = options; _logger = logger; _executor = executor; }
public WrapperBase(RequestDelegate next, DiagnosticContext diagnosticContext, AutoWrapperOptions options, IActionResultExecutor <ObjectResult> executor) { _next = next; _diagnosticContext = diagnosticContext; _options = options; _messageTemplate = new MessageTemplateParser().Parse(DefaultRequestCompletionMessageTemplate); _logger = options.Logger ?? Log.ForContext <WrapperBase>(); _executor = executor; }
public async Task AutoWrapperCustomErrorObject_Test() { var builder = new WebHostBuilder() .ConfigureServices(services => { services.AddMvcCore(); }) .Configure(app => { app.UseApiResponseAndExceptionWrapper <MapResponseCustomErrorObject>(); app.Run(context => throw new ApiException( new Error("An error blah.", "InvalidRange", new InnerError("12345678", "2020-03-20") ))); }); var server = new TestServer(builder); var req = new HttpRequestMessage(HttpMethod.Get, ""); var rep = await server.CreateClient().SendAsync(req); var content = await rep.Content.ReadAsStringAsync(); Convert.ToInt32(rep.StatusCode).ShouldBe(400); Exception ex; try { throw new ApiException( new Error("An error blah.", "InvalidRange", new InnerError("12345678", "2020-03-20") )); } catch (Exception e) { ex = e; } var ex1 = ex as ApiException; var options = new AutoWrapperOptions(); var jsonSettings = JSONHelper.GetJSONSettings <MapResponseCustomErrorObject>(options.IgnoreNullValue, options.ReferenceLoopHandling, options.UseCamelCaseNamingStrategy); var json = JsonHelper.ToJson(new ApiResponse(0, ex1.CustomError), jsonSettings.Settings); json.ToJson().ShouldBe(content.ToJson()); }
public WrapperBase(RequestDelegate next, AutoWrapperOptions options, ILogger <AutoWrapperMiddleware> logger) { _next = next; _options = options; _logger = logger; }