From 92260f6110dc910e172998571b9a05f02d051c09 Mon Sep 17 00:00:00 2001 From: Dmitriy yawaflua Andreev Date: Wed, 31 Jul 2024 08:02:10 +0300 Subject: [PATCH] Add ping controller and cleaning code --- Controllers/Default/PingController.cs | 15 +++++++++++++++ Controllers/v1/AnotherSkinsController.cs | 2 +- Controllers/v1/SkinsController.cs | 10 +++++----- Services/SkinService.cs | 9 +++------ Sources/Skin.cs | 11 +++++------ Startup.cs | 24 ++++++++++-------------- 6 files changed, 39 insertions(+), 32 deletions(-) create mode 100644 Controllers/Default/PingController.cs diff --git a/Controllers/Default/PingController.cs b/Controllers/Default/PingController.cs new file mode 100644 index 0000000..43fa8a4 --- /dev/null +++ b/Controllers/Default/PingController.cs @@ -0,0 +1,15 @@ +using Microsoft.AspNetCore.Mvc; + +namespace SkinsApi.Controllers.Default +{ + [Route("/ping")] + [ApiController] + public class PingController : ControllerBase + { + [HttpGet] + public async Task Ping() + { + return Ok("Pong"); + } + } +} diff --git a/Controllers/v1/AnotherSkinsController.cs b/Controllers/v1/AnotherSkinsController.cs index 0ae12a6..e8b62ef 100644 --- a/Controllers/v1/AnotherSkinsController.cs +++ b/Controllers/v1/AnotherSkinsController.cs @@ -5,7 +5,7 @@ namespace SkinsApi.Controllers.v1 { [Route("/skin/")] [ApiController] - public class AnotherSkinsController ( ISkinService skinService) : ControllerBase + public class AnotherSkinsController(ISkinService skinService) : ControllerBase { [HttpGet("{skin_type}/{width}/{user}")] [Produces("image/png")] diff --git a/Controllers/v1/SkinsController.cs b/Controllers/v1/SkinsController.cs index aae22e1..2af8f0f 100644 --- a/Controllers/v1/SkinsController.cs +++ b/Controllers/v1/SkinsController.cs @@ -1,13 +1,12 @@ using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.RateLimiting; using SkinsApi.Interfaces.Services; namespace SkinsApi.Controllers.v1 { [Route("/api/v1/skin/")] [ApiController] - - public class SkinsController (ISkinService skinService): ControllerBase + + public class SkinsController(ISkinService skinService) : ControllerBase { /// /// Get user`s skin @@ -50,11 +49,12 @@ namespace SkinsApi.Controllers.v1 try { return File((await skinService.GetSkinStreamAsync(user)).GetBody(width), "image/png"); - } catch(Exception ex) + } + catch (Exception ex) { return NotFound(); } - + } } } diff --git a/Services/SkinService.cs b/Services/SkinService.cs index 95979b7..a83dd5e 100644 --- a/Services/SkinService.cs +++ b/Services/SkinService.cs @@ -3,15 +3,12 @@ using SkinsApi.Interfaces.SkinService; using SkinsApi.Models; using SkinsApi.Models.SkinService; using SkinsApi.Sources; -using System.Buffers.Text; -using System.Drawing; using System.Text; using System.Text.Json; -using System.Text.Json.Serialization; namespace SkinsApi.Services { - public class SkinService (HttpClient client): ISkinService + public class SkinService(HttpClient client) : ISkinService { private async Task GetProfileByNicknameAsync(string nickname) { @@ -37,12 +34,12 @@ namespace SkinsApi.Services return JsonSerializer.Deserialize(decodedString); } public async Task GetSkinStreamAsync(string data) - { + { var uuid = await GetUuidFromDeparsedData(data); var skinproperty = await GetSkinProperty(uuid); var rq = await client.GetAsync(skinproperty.Textures.SKIN.Url); return new Skin(rq.Content.ReadAsStream(), skinproperty.Textures.SKIN.Metadata?.Model == "slim"); } - + } } diff --git a/Sources/Skin.cs b/Sources/Skin.cs index fd5b9bd..5966e1d 100644 --- a/Sources/Skin.cs +++ b/Sources/Skin.cs @@ -1,5 +1,4 @@ using SixLabors.ImageSharp; -using SixLabors.ImageSharp.Formats; using SixLabors.ImageSharp.Formats.Png; using SixLabors.ImageSharp.PixelFormats; using SixLabors.ImageSharp.Processing; @@ -45,7 +44,7 @@ namespace SkinsApi.Sources public Stream GetAllSkin(float width = 64f) { var stream = new MemoryStream(); - int resizedWidth = (int)(_bitmap.Width * (width/_bitmap.Width)); + int resizedWidth = (int)(_bitmap.Width * (width / _bitmap.Width)); var resizedPicture = _bitmap.Clone(c => c.Resize(resizedWidth, resizedWidth, KnownResamplers.NearestNeighbor)); resizedPicture.Save(stream, new PngEncoder()); stream.Position = 0; @@ -121,7 +120,7 @@ namespace SkinsApi.Sources .Resize(115, 171, KnownResamplers.NearestNeighbor)); // Изменение размера, если необходимо var bodyImageLayout = sourceImage.Clone(ctx => ctx .Crop(new(bodyLayoutStart, body)) - .Resize((int)(115*0.2), (int)(171*0.2), KnownResamplers.NearestNeighbor)); // Изменение размера, если необходимо + .Resize((int)(115 * 0.2), (int)(171 * 0.2), KnownResamplers.NearestNeighbor)); // Изменение размера, если необходимо finalImage.Mutate(ctx => ctx .DrawImage(bodyImage, new Point(87, 120), 1)); finalImage.Mutate(ctx => ctx @@ -219,13 +218,13 @@ namespace SkinsApi.Sources } var stream = new MemoryStream(); - - int resizedWidth = (int)(finalImage.Width * (width/ finalImage.Width)); + + int resizedWidth = (int)(finalImage.Width * (width / finalImage.Width)); finalImage.Mutate(k => k.Resize(resizedWidth, resizedWidth, KnownResamplers.NearestNeighbor)); finalImage.Save(stream, new PngEncoder()); stream.Position = 0; return stream; - + } } diff --git a/Startup.cs b/Startup.cs index 2f70ca2..97f11fd 100644 --- a/Startup.cs +++ b/Startup.cs @@ -1,13 +1,9 @@ -using Microsoft.OpenApi.Models; -using System.Net.Http.Headers; -using System.Net; -using System.Reflection; -using System.Text.Json.Serialization; +using AspNetCoreRateLimit; +using Microsoft.OpenApi.Models; using SkinsApi.Interfaces.Services; using SkinsApi.Services; -using System.Threading.RateLimiting; -using SixLabors.ImageSharp; -using AspNetCoreRateLimit; +using System.Reflection; +using System.Text.Json.Serialization; namespace SkinsApi { @@ -51,9 +47,9 @@ namespace SkinsApi }, TermsOfService = new Uri("https://yawaflua.ru/privacy") }); - + var xmlFilename = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; - // setup.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename), true); + // setup.IncludeXmlComments(Path.Combine(AppContext.BaseDirectory, xmlFilename), true); setup.AddServer(new OpenApiServer() { Url = "https://skins.yawaflua.ru/", Description = "Default web-server" }); #if DEBUG setup.AddServer(new OpenApiServer() { Url = "http://localhost/", Description = "Dev web-server" }); @@ -64,11 +60,11 @@ namespace SkinsApi .AddSingleton() .AddSingleton(configuration) .AddMemoryCache(); - services.Configure(configuration.GetSection("IpRateLimiting")); - services.AddInMemoryRateLimiting(); + services.Configure(configuration.GetSection("IpRateLimiting")); + services.AddInMemoryRateLimiting(); - // Добавление Rate Limiting Middleware - services.AddSingleton(); + // Добавление Rate Limiting Middleware + services.AddSingleton(); }