From bd4318d70cd9f06bcfe9cabb4557f98685abc086 Mon Sep 17 00:00:00 2001 From: Samson Amaugo Date: Tue, 17 Oct 2023 20:39:38 +0100 Subject: [PATCH] refactored code (#229) --- .../minimal-apis/samples/IFormFile/MyUtils.cs | 39 ++++++++++++++ .../minimal-apis/samples/IFormFile/Program.cs | 51 ++----------------- 2 files changed, 44 insertions(+), 46 deletions(-) create mode 100644 fundamentals/minimal-apis/samples/IFormFile/MyUtils.cs diff --git a/fundamentals/minimal-apis/samples/IFormFile/MyUtils.cs b/fundamentals/minimal-apis/samples/IFormFile/MyUtils.cs new file mode 100644 index 0000000..a524b18 --- /dev/null +++ b/fundamentals/minimal-apis/samples/IFormFile/MyUtils.cs @@ -0,0 +1,39 @@ + +public static class MyUtils +{ + static string GetOrCreateFilePath(string fileName, string contentRootPath, + string filesDirectory = "uploadFiles") + { + var directoryPath = Path.Combine(contentRootPath, filesDirectory); + Directory.CreateDirectory(directoryPath); + return Path.Combine(directoryPath, fileName); + } + + public static async Task SaveFileWithName(IFormFile file, string fileSaveName, string contentRootPath) + { + var filePath = GetOrCreateFilePath(fileSaveName, contentRootPath); + await using var fileStream = new FileStream(filePath, FileMode.Create); + await file.CopyToAsync(fileStream); + } + + public static string GenerateHtmlForm(string formFieldName, string requestToken) + { + return $""" + + +
+ +
+ +
+ +
+ + +
+ + + """; + } +} diff --git a/fundamentals/minimal-apis/samples/IFormFile/Program.cs b/fundamentals/minimal-apis/samples/IFormFile/Program.cs index 9d00025..d74139d 100644 --- a/fundamentals/minimal-apis/samples/IFormFile/Program.cs +++ b/fundamentals/minimal-apis/samples/IFormFile/Program.cs @@ -10,26 +10,24 @@ builder.Services.AddAntiforgery(); var app = builder.Build(); app.UseAntiforgery(); -var MyHtml = new MyUtils(); - // Generate a form with an anti-forgery token and an /upload endpoint. app.MapGet("/", (HttpContext context, IAntiforgery antiforgery) => { var token = antiforgery.GetAndStoreTokens(context); - var html = MyHtml.GenerateHtmlForm(token.FormFieldName, token.RequestToken!); + var html = MyUtils.GenerateHtmlForm(token.FormFieldName, token.RequestToken!); return Results.Content(html, "text/html"); }); app.MapPost("/upload", async Task,BadRequest>> - ([FromForm] FileUpload file, HttpContext context, IAntiforgery antiforgery) => + ([FromForm] FileUploadForm fileUploadForm, HttpContext context, IAntiforgery antiforgery) => { try { await antiforgery.ValidateRequestAsync(context); - await MyHtml.UploadFileWithName(file.FileDocument!, file.Name!, + await MyUtils.SaveFileWithName(fileUploadForm.FileDocument!, fileUploadForm.Name!, app.Environment.ContentRootPath); return TypedResults.Ok($"Your file with the description:" + - $" {file.Description} has been uploaded successfully"); + $" {fileUploadForm.Description} has been uploaded successfully"); } catch (AntiforgeryValidationException e) { @@ -40,48 +38,9 @@ app.MapPost("/upload", async Task,BadRequest>> app.Run(); // -public class FileUpload +public class FileUploadForm { public string? Name { get; set; } public string? Description { get; set; } public IFormFile? FileDocument { get; set; } } - -public class MyUtils -{ - string GetOrCreateFilePath(string fileName, string contentRootPath, - string filesDirectory = "uploadFiles") - { - var directoryPath = Path.Combine(contentRootPath, filesDirectory); - Directory.CreateDirectory(directoryPath); - return Path.Combine(directoryPath, fileName); - } - - public async Task UploadFileWithName(IFormFile file, string fileSaveName, string contentRootPath) - { - var filePath = GetOrCreateFilePath(fileSaveName, contentRootPath); - await using var fileStream = new FileStream(filePath, FileMode.Create); - await file.CopyToAsync(fileStream); - } - - public string GenerateHtmlForm(string formFieldName, string requestToken) - { - return $""" - - -
- -
- -
- -
- - -
- - - """; - } -}