From 07283cfeac62cfc518c565a91c41d6af6b5c4cb0 Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Sat, 12 Jul 2025 10:36:35 +0200 Subject: [PATCH] Aggiunta progetto DEMO x API risposta con preview da JWD --- Lux.API/Controllers/JwdController.cs | 99 +++++++++++++++++++++++++ Lux.API/DemoImg/Window01.jpg | Bin 0 -> 15729 bytes Lux.API/DemoImg/Window01.png | Bin 0 -> 29635 bytes Lux.API/DemoImg/Window01.svg | 24 ++++++ Lux.API/Lux.API.csproj | 18 +++++ Lux.API/Lux.API.http | 6 ++ Lux.API/Program.cs | 25 +++++++ Lux.API/Properties/launchSettings.json | 41 ++++++++++ Lux.API/appsettings.Development.json | 8 ++ Lux.API/appsettings.json | 9 +++ Lux.All.sln | 6 ++ Lux.Core/RestPayload/JwdDTO.cs | 17 +++++ 12 files changed, 253 insertions(+) create mode 100644 Lux.API/Controllers/JwdController.cs create mode 100644 Lux.API/DemoImg/Window01.jpg create mode 100644 Lux.API/DemoImg/Window01.png create mode 100644 Lux.API/DemoImg/Window01.svg create mode 100644 Lux.API/Lux.API.csproj create mode 100644 Lux.API/Lux.API.http create mode 100644 Lux.API/Program.cs create mode 100644 Lux.API/Properties/launchSettings.json create mode 100644 Lux.API/appsettings.Development.json create mode 100644 Lux.API/appsettings.json create mode 100644 Lux.Core/RestPayload/JwdDTO.cs diff --git a/Lux.API/Controllers/JwdController.cs b/Lux.API/Controllers/JwdController.cs new file mode 100644 index 00000000..f13578a0 --- /dev/null +++ b/Lux.API/Controllers/JwdController.cs @@ -0,0 +1,99 @@ +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using System.Diagnostics; + +namespace Lux.API.Controllers +{ + [ApiController] + [Route("api/[controller]")] + public class JwdController : ControllerBase + { + #region Public Constructors + + public JwdController(ILogger logger) + { + _logger = logger; + } + + #endregion Public Constructors + + #region Public Methods + + /// + /// Chiamata POST: riceve Json in formato JwdDto, restituisce jpeg file + /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 + /// + /// token comunicazione + /// + [HttpPost("jpegfile/{id}")] + public async Task jpegFile(string id, [FromBody] Lux.Core.RestPayload.JwdDTO currJwd) + { + // finta attesa/elaborazione + await Task.Delay(waitDelay); + // path immagine finto... + string fakeImagePath = "DemoImg/Window01.jpg"; + var imageBytes = await System.IO.File.ReadAllBytesAsync(fakeImagePath); + return File(imageBytes, "image/jpeg"); + } + + /// + /// Chiamata POST: riceve Json in formato JwdDto, restituisce png file + /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 + /// + /// token comunicazione + /// + [HttpPost("pngfile/{id}")] + public async Task pngFile(string id, [FromBody] Core.RestPayload.JwdDTO currJwd) + { + // finta attesa/elaborazione + await Task.Delay(waitDelay); + // path immagine finto... + string fakeImagePath = "DemoImg/Window01.png"; + var imageBytes = await System.IO.File.ReadAllBytesAsync(fakeImagePath); + return File(imageBytes, "image/png"); + } + /// + /// Chiamata POST: riceve Json in formato JwdDto, restituisce svg file + /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 + /// + /// token comunicazione + /// + [HttpPost("svgfile/{id}")] + public async Task svgFile(string id, [FromBody] Core.RestPayload.JwdDTO currJwd) + { + // finta attesa/elaborazione + await Task.Delay(waitDelay); + // path immagine finto... + string fakeImagePath = "DemoImg/Window01.svg"; + var svgContent = await System.IO.File.ReadAllTextAsync(fakeImagePath); + var bytes = System.Text.Encoding.UTF8.GetBytes(svgContent); + return File(bytes, "image/svg+xml"); + } + + /// + /// Chiamata POST: riceve Json in formato JwdDto, restituisce svg come string + /// PUT: api/Jwd/svg/00000000-0000-0000-0000-000000000000 + /// + /// token comunicazione + /// + [HttpPost("svg/{id}")] + public async Task> svgString(string id, [FromBody] Core.RestPayload.JwdDTO currJwd) + { + // finta attesa/elaborazione + await Task.Delay(waitDelay); + // path immagine finto... + string fakeImagePath = "DemoImg/Window01.svg"; + var svgContent = await System.IO.File.ReadAllTextAsync(fakeImagePath); + return Ok(svgContent); + } + + #endregion Public Methods + + #region Private Fields + + private readonly ILogger _logger; + private int waitDelay = 250; + + #endregion Private Fields + } +} \ No newline at end of file diff --git a/Lux.API/DemoImg/Window01.jpg b/Lux.API/DemoImg/Window01.jpg new file mode 100644 index 0000000000000000000000000000000000000000..96f7ee6c96eb069286273b0cf453647a819cc30e GIT binary patch literal 15729 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 KMNUMnLSTX>bY2qx literal 0 HcmV?d00001 diff --git a/Lux.API/DemoImg/Window01.svg b/Lux.API/DemoImg/Window01.svg new file mode 100644 index 00000000..baff5ad6 --- /dev/null +++ b/Lux.API/DemoImg/Window01.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Lux.API/Lux.API.csproj b/Lux.API/Lux.API.csproj new file mode 100644 index 00000000..2adcb589 --- /dev/null +++ b/Lux.API/Lux.API.csproj @@ -0,0 +1,18 @@ + + + + net8.0 + enable + enable + + + + + + + + + + + + diff --git a/Lux.API/Lux.API.http b/Lux.API/Lux.API.http new file mode 100644 index 00000000..a467d7b7 --- /dev/null +++ b/Lux.API/Lux.API.http @@ -0,0 +1,6 @@ +@Lux.API_HostAddress = http://localhost:5109 + +GET {{Lux.API_HostAddress}}/weatherforecast/ +Accept: application/json + +### diff --git a/Lux.API/Program.cs b/Lux.API/Program.cs new file mode 100644 index 00000000..48863a6d --- /dev/null +++ b/Lux.API/Program.cs @@ -0,0 +1,25 @@ +var builder = WebApplication.CreateBuilder(args); + +// Add services to the container. + +builder.Services.AddControllers(); +// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +// Configure the HTTP request pipeline. +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.UseAuthorization(); + +app.MapControllers(); + +app.Run(); diff --git a/Lux.API/Properties/launchSettings.json b/Lux.API/Properties/launchSettings.json new file mode 100644 index 00000000..12a5a9e8 --- /dev/null +++ b/Lux.API/Properties/launchSettings.json @@ -0,0 +1,41 @@ +{ + "$schema": "http://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:44205", + "sslPort": 44342 + } + }, + "profiles": { + "http": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "http://localhost:5109", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "https": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "launchUrl": "swagger", + "applicationUrl": "https://localhost:7135;http://localhost:5109", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/Lux.API/appsettings.Development.json b/Lux.API/appsettings.Development.json new file mode 100644 index 00000000..0c208ae9 --- /dev/null +++ b/Lux.API/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/Lux.API/appsettings.json b/Lux.API/appsettings.json new file mode 100644 index 00000000..10f68b8c --- /dev/null +++ b/Lux.API/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/Lux.All.sln b/Lux.All.sln index b120c896..9f7937b3 100644 --- a/Lux.All.sln +++ b/Lux.All.sln @@ -13,6 +13,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lux.UI", "Lux.UI\Lux.UI\Lux EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lux.UI.Client", "Lux.UI\Lux.UI.Client\Lux.UI.Client.csproj", "{ECA4B6A4-692B-41EB-8238-C33C5FB71942}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lux.API", "Lux.API\Lux.API.csproj", "{803F1751-6183-45DE-A914-56EF91AF8637}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -39,6 +41,10 @@ Global {ECA4B6A4-692B-41EB-8238-C33C5FB71942}.Debug|Any CPU.Build.0 = Debug|Any CPU {ECA4B6A4-692B-41EB-8238-C33C5FB71942}.Release|Any CPU.ActiveCfg = Release|Any CPU {ECA4B6A4-692B-41EB-8238-C33C5FB71942}.Release|Any CPU.Build.0 = Release|Any CPU + {803F1751-6183-45DE-A914-56EF91AF8637}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {803F1751-6183-45DE-A914-56EF91AF8637}.Debug|Any CPU.Build.0 = Debug|Any CPU + {803F1751-6183-45DE-A914-56EF91AF8637}.Release|Any CPU.ActiveCfg = Release|Any CPU + {803F1751-6183-45DE-A914-56EF91AF8637}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Lux.Core/RestPayload/JwdDTO.cs b/Lux.Core/RestPayload/JwdDTO.cs new file mode 100644 index 00000000..72f7bfa9 --- /dev/null +++ b/Lux.Core/RestPayload/JwdDTO.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Lux.Core.RestPayload +{ + public class JwdDTO + { + + public double Width { get; set; } = 800; + public double Height { get; set; } = 800; + + public string ImagePath { get; set; } = @"c:\local\path.jpg"; + } +}