// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { ControllerActivator.loggerFactory = loggerFactory; loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); //var routeBuilder = new RouteBuilder(app); //routeBuilder.MapRoute("echo", (context) => //{ // var body = new StreamReader(context.Request.Body).ReadToEnd(); // // context.GetRouteData().Values // return context.Response.WriteAsync(body); //}); //app.UseRouter(routeBuilder.Build()); var useCases = new UseCaseFactory(Configuration, loggerFactory); app.Map("/api/transferOn", a => a.Run(async ctx => { TransferOn transfer = await Parse <TransferOn>(ctx.Request.Body); IActionResult result = useCases.PersistTransferOn()(transfer); await WriteResponse(ctx.Response, result); })); app.UseMvc(); }
Either <Error, TransferOn> ValidateDate(TransferOn request) { if (request.Date.Date <= clock.UtcNow.Date) { return(Errors.TransferDateIsPast); } else { return(request); } }
Either <Error, TransferOn> ValidateBic(TransferOn request) { if (!bicRegex.IsMatch(request.Bic)) { return(Errors.InvalidBic); } else { return(request); } }
public Validation <Exceptional <Unit> > Handle(TransferOn request) => validators .Validate(request) .Map(repository.Save);
public ResultDto <Unit> BookTransferOn_v2([FromBody] TransferOn request) => transfers.Handle(request).ToResult();
public IActionResult BookTransferOn_v1([FromBody] TransferOn request) => transfers.Handle(request).Match <IActionResult>( Right: _ => Ok(), Left: BadRequest);
public IActionResult MakeFutureTransfer([FromBody] TransferOn request) => transfers.Handle(request).Match( Invalid: BadRequest, Valid: result => result.Match( Exception: OnFaulted, Success: _ => Ok()));
public Either <Error, Unit> Handle(TransferOn request) => validators .Validate(request) .Bind(repository.Save);
Either <Error, TransferOn> Validate(TransferOn request) { throw new NotImplementedException(); }
public Either <Error, Unit> HandleLINQ(TransferOn request) => from r1 in ValidateBic(request) from r2 in ValidateDate(r1) from unit in repository.Save(r2) select unit;
public Either <Error, Unit> Handle(TransferOn request) => Either.Of <Error, TransferOn>(request) .Bind(ValidateBic) .Bind(ValidateDate) .Bind(repository.Save);