From dde32c7ecddd8366f793b6c405117e6d98dd0ec2 Mon Sep 17 00:00:00 2001 From: Cristiano Date: Fri, 17 Oct 2025 10:21:13 +0200 Subject: [PATCH] Creating endpoints with errors --- BlogPlatform/BlogPlatform/BlogPlatform.csproj | 7 +-- .../DTO/User/Request/CreateUserDto.cs | 1 - .../Comment/CreateCommentEndpoint.cs | 57 ++++++++++++++++++ .../Endpoints/Comment/GetCommentEndpoint.cs | 48 +++++++++++++++ .../Endpoints/Post/CreatePostEndpoint.cs | 52 ++++++++++++++++ .../Endpoints/Post/GetPostEndpoint.cs | 44 ++++++++++++++ .../Endpoints/User/CreateUserEndpoint.cs | 38 ++++++++++++ .../obj/BlogPlatform.csproj.nuget.dgspec.json | 4 ++ .../Debug/net8.0/BlogPlatform.AssemblyInfo.cs | 2 +- .../BlogPlatform.AssemblyInfoInputs.cache | 2 +- .../Debug/net8.0/BlogPlatform.assets.cache | Bin 64020 -> 64527 bytes ...logPlatform.csproj.AssemblyReference.cache | Bin 16081 -> 16340 bytes .../BlogPlatform/obj/project.assets.json | 26 ++++++++ .../BlogPlatform/obj/project.nuget.cache | 3 +- .../BlogPlatform/obj/project.packagespec.json | 2 +- .../obj/rider.project.model.nuget.info | 2 +- .../obj/rider.project.restore.info | 2 +- 17 files changed, 277 insertions(+), 13 deletions(-) create mode 100644 BlogPlatform/BlogPlatform/Endpoints/Comment/CreateCommentEndpoint.cs create mode 100644 BlogPlatform/BlogPlatform/Endpoints/Comment/GetCommentEndpoint.cs create mode 100644 BlogPlatform/BlogPlatform/Endpoints/Post/CreatePostEndpoint.cs create mode 100644 BlogPlatform/BlogPlatform/Endpoints/Post/GetPostEndpoint.cs create mode 100644 BlogPlatform/BlogPlatform/Endpoints/User/CreateUserEndpoint.cs diff --git a/BlogPlatform/BlogPlatform/BlogPlatform.csproj b/BlogPlatform/BlogPlatform/BlogPlatform.csproj index 980decb..482161e 100644 --- a/BlogPlatform/BlogPlatform/BlogPlatform.csproj +++ b/BlogPlatform/BlogPlatform/BlogPlatform.csproj @@ -15,14 +15,9 @@ runtime; build; native; contentfiles; analyzers; buildtransitive + - - - - - - diff --git a/BlogPlatform/BlogPlatform/DTO/User/Request/CreateUserDto.cs b/BlogPlatform/BlogPlatform/DTO/User/Request/CreateUserDto.cs index 94529ab..d814675 100644 --- a/BlogPlatform/BlogPlatform/DTO/User/Request/CreateUserDto.cs +++ b/BlogPlatform/BlogPlatform/DTO/User/Request/CreateUserDto.cs @@ -5,5 +5,4 @@ public class CreateUserDto public string? Username { get; set; } public string? Email { get; set; } public string? Password { get; set; } - public string? Salt { get; set; } } \ No newline at end of file diff --git a/BlogPlatform/BlogPlatform/Endpoints/Comment/CreateCommentEndpoint.cs b/BlogPlatform/BlogPlatform/Endpoints/Comment/CreateCommentEndpoint.cs new file mode 100644 index 0000000..7ac93ff --- /dev/null +++ b/BlogPlatform/BlogPlatform/Endpoints/Comment/CreateCommentEndpoint.cs @@ -0,0 +1,57 @@ + +using BlogPlatform.DTO.Comment.Request; +using BlogPlatform.DTO.Comment.Response; +using BlogPlatform.Models; +using FastEndpoints; + +namespace BlogPlatform.Endpoints.Comment; + +public class CreateCommentEndpoint(BlogPlatformDbContext db) : Endpoint +{ + public override void Configure() + { + Post("/api/comments"); + } + + public override async Task HandleAsync(CreateCommentDto req, CancellationToken ct) + { + // Checking if the user and post IDs exist in our database + Models.User? checkingUser = await db.Users.FindAsync(req.UserId); + Models.Post? checkingPost = await db.Posts.FindAsync(req.PostId); + + if (checkingUser == null || checkingPost == null) + { + await Send.StringAsync("You must add a comment on a Post that exist and of a User that exists", 400); + return; + } + + // User and Post exists adding the comment + Models.Comment newComment = new() + { + Content = req.Content, + PostId = req.PostId, + Post = checkingPost, + UserId = req.UserId, + User = checkingUser, + + }; + + db.Comments.Add(newComment); + await db.SaveChangesAsync(ct); + + + // Returning the response with DTO + GetCommentDto dto = new() + { + Id = newComment.Id, + Content = newComment.Content, + PostId = newComment.PostId, + PostTitle = checkingPost.Title, + UserId = newComment.UserId, + UserUsername = checkingUser.Username + + }; + + await Send.OkAsync(dto, ct); + } +} \ No newline at end of file diff --git a/BlogPlatform/BlogPlatform/Endpoints/Comment/GetCommentEndpoint.cs b/BlogPlatform/BlogPlatform/Endpoints/Comment/GetCommentEndpoint.cs new file mode 100644 index 0000000..e40e97d --- /dev/null +++ b/BlogPlatform/BlogPlatform/Endpoints/Comment/GetCommentEndpoint.cs @@ -0,0 +1,48 @@ +using BlogPlatform.DTO.Comment.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace BlogPlatform.Endpoints.Comment; + + +public class GetCommentRequest +{ + public int Id { get; set; } +} + + +public class GetCommentEndpoint(BlogPlatformDbContext db) : Endpoint +{ + public override void Configure() + { + Get("/api/comments/{@id}", x => new{x.Id}); + } + + public override async Task HandleAsync(GetCommentRequest req, CancellationToken ct) + { + Models.Comment? comment = await db.Comments + .Include(comment => comment.User) + .Include(comment => comment.Post) + .FirstOrDefaultAsync(x => x.Id == req.Id); + + if (comment == null) + { + await Send.NotFoundAsync(ct); + return; + } + + // Returning the response with DTO + GetCommentDto dto = new() + { + Id = comment.Id, + Content = comment.Content, + PostId = comment.PostId, + PostTitle = comment.Post.Title, + UserId = comment.UserId, + UserUsername = comment.User.Username + + }; + + await Send.OkAsync(dto, ct); + } +} diff --git a/BlogPlatform/BlogPlatform/Endpoints/Post/CreatePostEndpoint.cs b/BlogPlatform/BlogPlatform/Endpoints/Post/CreatePostEndpoint.cs new file mode 100644 index 0000000..579deab --- /dev/null +++ b/BlogPlatform/BlogPlatform/Endpoints/Post/CreatePostEndpoint.cs @@ -0,0 +1,52 @@ +using BlogPlatform.DTO.Comment.Request; +using BlogPlatform.DTO.Comment.Response; +using BlogPlatform.DTO.Post.Request; +using BlogPlatform.DTO.Post.Response; +using FastEndpoints; + +namespace BlogPlatform.Endpoints.Post; + +public class CreatePostEndpoint(BlogPlatformDbContext db) : Endpoint +{ + public override void Configure() + { + Post("/api/posts"); + } + + public override async Task HandleAsync(CreatePostDto req, CancellationToken ct) + { + Models.User checkingUser = await db.Users.FindAsync(req.UserId); + + if (checkingUser == null) + { + await Send.StringAsync("You must create a post with an existing user", 400); + return; + } + + Models.Post newPost = new() + { + Title = req.Title, + Content = req.Content, + Likes = req.Likes, + UserId = req.UserId, + User = checkingUser + }; + + db.Posts.Add(newPost); + await db.SaveChangesAsync(ct); + + GetPostDto dto = new() + { + Id = newPost.Id, + Title = req.Title, + Content = req.Content, + Likes = req.Likes, + UserId = req.UserId, + UserUsername = checkingUser.Username, + UserEmail = checkingUser.Email, + }; + + await Send.OkAsync(dto, ct); + + } +} \ No newline at end of file diff --git a/BlogPlatform/BlogPlatform/Endpoints/Post/GetPostEndpoint.cs b/BlogPlatform/BlogPlatform/Endpoints/Post/GetPostEndpoint.cs new file mode 100644 index 0000000..99d96cd --- /dev/null +++ b/BlogPlatform/BlogPlatform/Endpoints/Post/GetPostEndpoint.cs @@ -0,0 +1,44 @@ +using BlogPlatform.DTO.Post.Response; +using FastEndpoints; +using Microsoft.EntityFrameworkCore; + +namespace BlogPlatform.Endpoints.Post; + +public class GetPostRequest +{ + public int Id { get; set; } +} + +public class GetPostEndpoint(BlogPlatformDbContext db) : Endpoint +{ + public override void Configure() + { + Get("/api/posts/{@id}", x => new{x.Id}); + } + + public override async Task HandleAsync(GetPostRequest req, CancellationToken ct) + { + Models.Post post = await db.Posts + .Include(post => post.User) + .SingleOrDefaultAsync(x => x.Id == req.Id); + + if (post == null) + { + await Send.NotFoundAsync(ct); + return; + } + + GetPostDto dto = new() + { + Id = post.Id, + Title = req.Title, + Content = req.Content, + Likes = req.Likes, + UserId = req.UserId, + UserUsername = checkingUser.Username, + UserEmail = checkingUser.Email, + }; + + await Send.OkAsync(dto, ct); + } +} \ No newline at end of file diff --git a/BlogPlatform/BlogPlatform/Endpoints/User/CreateUserEndpoint.cs b/BlogPlatform/BlogPlatform/Endpoints/User/CreateUserEndpoint.cs new file mode 100644 index 0000000..576460d --- /dev/null +++ b/BlogPlatform/BlogPlatform/Endpoints/User/CreateUserEndpoint.cs @@ -0,0 +1,38 @@ +using BlogPlatform.DTO.Comment.Request; +using BlogPlatform.DTO.Comment.Response; +using BlogPlatform.DTO.User.Request; +using BlogPlatform.DTO.User.Response; +using BlogPlatform.Models; +using FastEndpoints; +using PasswordGenerator; + +namespace BlogPlatform.Endpoints.User; + +public class CreateUserEndpoint(BlogPlatformDbContext db) : Endpoint +{ + public override void Configure() + { + Post("/api/users"); + AllowAnonymous(); + } + + public override async Task HandleAsync(CreateUserDto req, CancellationToken ct) + { + string? salt = new Password() + .IncludeLowercase() + .IncludeUppercase() + .IncludeNumeric() + .IncludeSpecial() + .LengthRequired(24) + .Next(); + + Models.User user = new() + { + Username = req.Username, + Email = req.Email, + Password = Singulink.Cryptography.PasswordHasher(req.Password+ salt, salt), + Salt = salt, + + } + } +} diff --git a/BlogPlatform/BlogPlatform/obj/BlogPlatform.csproj.nuget.dgspec.json b/BlogPlatform/BlogPlatform/obj/BlogPlatform.csproj.nuget.dgspec.json index 49e78de..1eb901a 100644 --- a/BlogPlatform/BlogPlatform/obj/BlogPlatform.csproj.nuget.dgspec.json +++ b/BlogPlatform/BlogPlatform/obj/BlogPlatform.csproj.nuget.dgspec.json @@ -60,6 +60,10 @@ "target": "Package", "version": "[8.0.20, )" }, + "PasswordGenerator": { + "target": "Package", + "version": "[2.1.0, )" + }, "Singulink.Cryptography.PasswordHasher": { "target": "Package", "version": "[3.0.2, )" diff --git a/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.AssemblyInfo.cs b/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.AssemblyInfo.cs index eccc5ef..9b80588 100644 --- a/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.AssemblyInfo.cs +++ b/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("BlogPlatform")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+3fa5289fb179c6531ef666b66d5fb77eba91f166")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+2369cdbc398561b187eafbf4f208541a0bf6ebd8")] [assembly: System.Reflection.AssemblyProductAttribute("BlogPlatform")] [assembly: System.Reflection.AssemblyTitleAttribute("BlogPlatform")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.AssemblyInfoInputs.cache b/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.AssemblyInfoInputs.cache index 297c83d..95d6bdd 100644 --- a/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.AssemblyInfoInputs.cache +++ b/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.AssemblyInfoInputs.cache @@ -1 +1 @@ -0f79a8820730bb50db3f741ae20cc71e5fd45452fc8efc9b4577dd707ee51130 +399cf2c58589a118a3fb968eb6106a6f5f0387106b36b127abb19a5be52197f6 diff --git a/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.assets.cache b/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.assets.cache index 4ec452a2ab51a96469afe962cfe280dda03fe758..e08a5ed018a1fbc79d2ba1ab8a319a967497dd5a 100644 GIT binary patch delta 8945 zcmai430PD|66UE~j-w26ih)5%6mSNH1a*k45D!E=FsvunprC+&AYOs_2xTDow~-0WF7MLBb`=FOQK5v4bPVW*Ez zG9O8>jOeoq3OYmVwg9OT+M4>n{_A0IvriO!>k|Yke9AScm`o>ZY1k;Sbm-x`Qj;OG zX2NeH7D9lZN@J3ZWWnuT;jm-Jv;LiNg#M;uBgPbL#5e;Q{nmPBb88N_&UAu?{h3zK zEI#bYhjXFTzsft0TZeILKK9e0>8XBjdemST5D*0K_nP5d#J%QluVU<%<7E58y#{xv zPaF?715}z4?iI+r=7Kan1hk2+pdX#0rB%WK`YXjo`Om{f`On9;9%|0K2#tq~)`S1{{1h&x)cD}&QXdG-#AWlZIu8=%L|a}sn9@`d|TUHyu)r&AjASA~r}S7O@)@zZ_>UuT7oW9?_2UUq)VEq*m^L%>uV z2Dh|2_Z1c+&SMxXtqN(L9lT$Hyb;|{CdJ?x(o;%9X_R@`5iylOy>B_}3sJe7I71pV zg$$6UG=CiOmW!vxL6FV$;qP{l+@K^f;OUhJ(O_GJ%@f;dY-_Ns#kLOHdTbk@DKeaS z2H+KWI%5-gZUo6NAe1=!cHp@Q$HT#341{?G4MS}10I>zf^@!+K5iwXFsgH`JBq&s9 z2f%6^_jOnVIF(r8Ry1{`l>mjbt&AAfc-Jm47C!~$_ zQt!vBI&AgW8nB2=1J#XwaDRdu`MOu4m8!-87&|sdeGos9{~>Jk@awn?c;{X(Fx^x; z_#Y;J%@OW@l>D(BL;iK`c#kvQm$}~w@`IY>3{c+@^ENWxQ{4YF`D1Hhc|S~!Xvckq z`8IRkv)uO_^VOA#`Oh=V1&+aQEyn)}!_?gsV_qeU_a%7<|^}ho%_AP{oZ7`T)XACM{kk8`fcuijr<{aQVwLA{Dph;2bT8@ z?thc>zk~g9miME;K&YJbT)W(Fv7G+MG4FEBZFrEH3dxfPYV3

E=(&|2^(+(;4~i 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 diff --git a/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.csproj.AssemblyReference.cache b/BlogPlatform/BlogPlatform/obj/Debug/net8.0/BlogPlatform.csproj.AssemblyReference.cache index a31421428371cb87e88d505f3f9c3e79d706673c..c5da7c2238ba02338818e9106aa62195fc50ada5 100644 GIT binary patch delta 185 zcmcaud!?R(jZv9_fq~I`@VCo-x{)@R|}+@LqJAD8E delta 33 ncmcaof3cQ>jZuk#fq~I`@= 8.0.20", "Microsoft.EntityFrameworkCore.Design >= 8.0.20", "Microsoft.EntityFrameworkCore.SqlServer >= 8.0.20", + "PasswordGenerator >= 2.1.0", "Singulink.Cryptography.PasswordHasher >= 3.0.2", "Swashbuckle.AspNetCore >= 6.6.2" ] @@ -4650,6 +4672,10 @@ "target": "Package", "version": "[8.0.20, )" }, + "PasswordGenerator": { + "target": "Package", + "version": "[2.1.0, )" + }, "Singulink.Cryptography.PasswordHasher": { "target": "Package", "version": "[3.0.2, )" diff --git a/BlogPlatform/BlogPlatform/obj/project.nuget.cache b/BlogPlatform/BlogPlatform/obj/project.nuget.cache index 2e74f6a..394c3b0 100644 --- a/BlogPlatform/BlogPlatform/obj/project.nuget.cache +++ b/BlogPlatform/BlogPlatform/obj/project.nuget.cache @@ -1,6 +1,6 @@ { "version": 2, - "dgSpecHash": "J6GHh76bgMQ=", + "dgSpecHash": "O3btQBsvLxE=", "success": true, "projectFilePath": "/home/cristiano/Documents/BTS-SIO2/DS-Cristiano/BlogPlatform/BlogPlatform/BlogPlatform.csproj", "expectedPackageFiles": [ @@ -52,6 +52,7 @@ "/home/cristiano/.nuget/packages/microsoft.sqlserver.server/1.0.0/microsoft.sqlserver.server.1.0.0.nupkg.sha512", "/home/cristiano/.nuget/packages/microsoft.win32.systemevents/6.0.0/microsoft.win32.systemevents.6.0.0.nupkg.sha512", "/home/cristiano/.nuget/packages/mono.texttemplating/2.2.1/mono.texttemplating.2.2.1.nupkg.sha512", + "/home/cristiano/.nuget/packages/passwordgenerator/2.1.0/passwordgenerator.2.1.0.nupkg.sha512", "/home/cristiano/.nuget/packages/singulink.cryptography.passwordhasher/3.0.2/singulink.cryptography.passwordhasher.3.0.2.nupkg.sha512", "/home/cristiano/.nuget/packages/swashbuckle.aspnetcore/6.6.2/swashbuckle.aspnetcore.6.6.2.nupkg.sha512", "/home/cristiano/.nuget/packages/swashbuckle.aspnetcore.swagger/6.6.2/swashbuckle.aspnetcore.swagger.6.6.2.nupkg.sha512", diff --git a/BlogPlatform/BlogPlatform/obj/project.packagespec.json b/BlogPlatform/BlogPlatform/obj/project.packagespec.json index 153f84b..ae30444 100644 --- a/BlogPlatform/BlogPlatform/obj/project.packagespec.json +++ b/BlogPlatform/BlogPlatform/obj/project.packagespec.json @@ -1 +1 @@ -"restore":{"projectUniqueName":"/home/cristiano/Documents/BTS-SIO2/DS-Cristiano/BlogPlatform/BlogPlatform/BlogPlatform.csproj","projectName":"BlogPlatform","projectPath":"/home/cristiano/Documents/BTS-SIO2/DS-Cristiano/BlogPlatform/BlogPlatform/BlogPlatform.csproj","outputPath":"/home/cristiano/Documents/BTS-SIO2/DS-Cristiano/BlogPlatform/BlogPlatform/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"FastEndpoints":{"target":"Package","version":"[7.0.1, )"},"Microsoft.AspNetCore.OpenApi":{"target":"Package","version":"[8.0.20, )"},"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.20, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.20, )"},"Microsoft.EntityFrameworkCore.SqlServer":{"target":"Package","version":"[8.0.20, )"},"Singulink.Cryptography.PasswordHasher":{"target":"Package","version":"[3.0.2, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[6.6.2, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/lib/dotnet/sdk/8.0.121/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file +"restore":{"projectUniqueName":"/home/cristiano/Documents/BTS-SIO2/DS-Cristiano/BlogPlatform/BlogPlatform/BlogPlatform.csproj","projectName":"BlogPlatform","projectPath":"/home/cristiano/Documents/BTS-SIO2/DS-Cristiano/BlogPlatform/BlogPlatform/BlogPlatform.csproj","outputPath":"/home/cristiano/Documents/BTS-SIO2/DS-Cristiano/BlogPlatform/BlogPlatform/obj/","projectStyle":"PackageReference","originalTargetFrameworks":["net8.0"],"sources":{"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net8.0":{"targetAlias":"net8.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]}}"frameworks":{"net8.0":{"targetAlias":"net8.0","dependencies":{"FastEndpoints":{"target":"Package","version":"[7.0.1, )"},"Microsoft.AspNetCore.OpenApi":{"target":"Package","version":"[8.0.20, )"},"Microsoft.EntityFrameworkCore":{"target":"Package","version":"[8.0.20, )"},"Microsoft.EntityFrameworkCore.Design":{"include":"Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive","suppressParent":"All","target":"Package","version":"[8.0.20, )"},"Microsoft.EntityFrameworkCore.SqlServer":{"target":"Package","version":"[8.0.20, )"},"PasswordGenerator":{"target":"Package","version":"[2.1.0, )"},"Singulink.Cryptography.PasswordHasher":{"target":"Package","version":"[3.0.2, )"},"Swashbuckle.AspNetCore":{"target":"Package","version":"[6.6.2, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.AspNetCore.App":{"privateAssets":"none"},"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"/usr/lib/dotnet/sdk/8.0.121/PortableRuntimeIdentifierGraph.json"}} \ No newline at end of file diff --git a/BlogPlatform/BlogPlatform/obj/rider.project.model.nuget.info b/BlogPlatform/BlogPlatform/obj/rider.project.model.nuget.info index e0f3655..93953d1 100644 --- a/BlogPlatform/BlogPlatform/obj/rider.project.model.nuget.info +++ b/BlogPlatform/BlogPlatform/obj/rider.project.model.nuget.info @@ -1 +1 @@ -17606848202915370 \ No newline at end of file +17606871115387461 \ No newline at end of file diff --git a/BlogPlatform/BlogPlatform/obj/rider.project.restore.info b/BlogPlatform/BlogPlatform/obj/rider.project.restore.info index f81f637..71514f9 100644 --- a/BlogPlatform/BlogPlatform/obj/rider.project.restore.info +++ b/BlogPlatform/BlogPlatform/obj/rider.project.restore.info @@ -1 +1 @@ -17606848204795382 \ No newline at end of file +17606871117347472 \ No newline at end of file