From d6a46112f5634f6fc834f0999c396f8c72479a55 Mon Sep 17 00:00:00 2001 From: SrShadowy <43967231+SrShadowy@users.noreply.github.com> Date: Sat, 12 Nov 2022 22:32:50 -0300 Subject: [PATCH 1/4] Teste Backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Versão 0.0.1 Dirty Teste de back-end. Projeto de API REST com ASP NET CORE 6 (C#) Com banco de dados SQL SERVER Utlizando Docker com Compose. APIS Utilizadas como requisitados + Serilog --- .gitignore | 404 ++++++++++++++++++ APIBook/.dockerignore | 25 ++ APIBook/.vscode/launch.json | 35 ++ APIBook/.vscode/tasks.json | 41 ++ APIBook/APIBook.sln | 31 ++ APIBook/APIBook/APIBook.csproj | 36 ++ APIBook/APIBook/Authorization/Auth.cs | 46 ++ APIBook/APIBook/Controller/BookController.cs | 133 ++++++ APIBook/APIBook/Dockerfile | 20 + .../20221112182723_booksDB.Designer.cs | 57 +++ .../Migrations/20221112182723_booksDB.cs | 38 ++ .../Migrations/BookContextModelSnapshot.cs | 54 +++ APIBook/APIBook/Model/Book.cs | 12 + APIBook/APIBook/Model/BookContext.cs | 14 + APIBook/APIBook/Model/User.cs | 13 + APIBook/APIBook/Program.cs | 86 ++++ .../APIBook/Properties/launchSettings.json | 38 ++ APIBook/APIBook/Repository/BookRepository.cs | 64 +++ APIBook/APIBook/Repository/IBookRepository.cs | 16 + APIBook/APIBook/Repository/UserRepository.cs | 17 + .../Services/DataBaseMigrateService.cs | 20 + APIBook/APIBook/appsettings.Development.json | 15 + APIBook/APIBook/appsettings.json | 14 + APIBook/Dockerfile | 20 + APIBook/docker-compose.dcproj | 18 + APIBook/docker-compose.override.yml | 13 + APIBook/docker-compose.yml | 22 + APIBook/launchSettings.json | 12 + "Curr\303\255culo.pdf" | Bin 0 -> 70011 bytes 29 files changed, 1314 insertions(+) create mode 100644 .gitignore create mode 100644 APIBook/.dockerignore create mode 100644 APIBook/.vscode/launch.json create mode 100644 APIBook/.vscode/tasks.json create mode 100644 APIBook/APIBook.sln create mode 100644 APIBook/APIBook/APIBook.csproj create mode 100644 APIBook/APIBook/Authorization/Auth.cs create mode 100644 APIBook/APIBook/Controller/BookController.cs create mode 100644 APIBook/APIBook/Dockerfile create mode 100644 APIBook/APIBook/Migrations/20221112182723_booksDB.Designer.cs create mode 100644 APIBook/APIBook/Migrations/20221112182723_booksDB.cs create mode 100644 APIBook/APIBook/Migrations/BookContextModelSnapshot.cs create mode 100644 APIBook/APIBook/Model/Book.cs create mode 100644 APIBook/APIBook/Model/BookContext.cs create mode 100644 APIBook/APIBook/Model/User.cs create mode 100644 APIBook/APIBook/Program.cs create mode 100644 APIBook/APIBook/Properties/launchSettings.json create mode 100644 APIBook/APIBook/Repository/BookRepository.cs create mode 100644 APIBook/APIBook/Repository/IBookRepository.cs create mode 100644 APIBook/APIBook/Repository/UserRepository.cs create mode 100644 APIBook/APIBook/Services/DataBaseMigrateService.cs create mode 100644 APIBook/APIBook/appsettings.Development.json create mode 100644 APIBook/APIBook/appsettings.json create mode 100644 APIBook/Dockerfile create mode 100644 APIBook/docker-compose.dcproj create mode 100644 APIBook/docker-compose.override.yml create mode 100644 APIBook/docker-compose.yml create mode 100644 APIBook/launchSettings.json create mode 100644 "Curr\303\255culo.pdf" diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..ce3b7779 --- /dev/null +++ b/.gitignore @@ -0,0 +1,404 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates +*.old +*.original +*.txt +*.bin +*.ldf +*.mdf + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio 6 auto-generated project file (contains which files were open etc.) +*.vbp + +# Visual Studio 6 workspace and project file (working project files containing files to include in project) +*.dsw +*.dsp + +# Visual Studio 6 technical files +*.ncb +*.aps + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# Visual Studio History (VSHistory) files +.vshistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +# VS Code files for those working on multiple tools +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# Local History for Visual Studio Code +.history/ + +# Windows Installer files from build outputs +*.cab +*.msi +*.msix +*.msm +*.msp + +# JetBrains Rider +*.sln.iml diff --git a/APIBook/.dockerignore b/APIBook/.dockerignore new file mode 100644 index 00000000..3729ff0c --- /dev/null +++ b/APIBook/.dockerignore @@ -0,0 +1,25 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md \ No newline at end of file diff --git a/APIBook/.vscode/launch.json b/APIBook/.vscode/launch.json new file mode 100644 index 00000000..672dc349 --- /dev/null +++ b/APIBook/.vscode/launch.json @@ -0,0 +1,35 @@ +{ + "version": "0.2.0", + "configurations": [ + { + // Use IntelliSense to find out which attributes exist for C# debugging + // Use hover for the description of the existing attributes + // For further information visit https://github.com/OmniSharp/omnisharp-vscode/blob/master/debugger-launchjson.md + "name": ".NET Core Launch (web)", + "type": "coreclr", + "request": "launch", + "preLaunchTask": "build", + // If you have changed target frameworks, make sure to update the program path. + "program": "${workspaceFolder}/APIBook/bin/Debug/net6.0/APIBook.dll", + "args": [], + "cwd": "${workspaceFolder}/APIBook", + "stopAtEntry": false, + // Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser + "serverReadyAction": { + "action": "openExternally", + "pattern": "\\bNow listening on:\\s+(https?://\\S+)" + }, + "env": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "sourceFileMap": { + "/Views": "${workspaceFolder}/Views" + } + }, + { + "name": ".NET Core Attach", + "type": "coreclr", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/APIBook/.vscode/tasks.json b/APIBook/.vscode/tasks.json new file mode 100644 index 00000000..239633cf --- /dev/null +++ b/APIBook/.vscode/tasks.json @@ -0,0 +1,41 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/APIBook/APIBook.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/APIBook/APIBook.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "--project", + "${workspaceFolder}/APIBook/APIBook.csproj" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/APIBook/APIBook.sln b/APIBook/APIBook.sln new file mode 100644 index 00000000..f5f54ef2 --- /dev/null +++ b/APIBook/APIBook.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.4.33103.184 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "APIBook", "APIBook\APIBook.csproj", "{3C79CF80-0AD9-42A5-8FA8-6B75170A037F}" +EndProject +Project("{E53339B2-1760-4266-BCC7-CA923CBCF16C}") = "docker-compose", "docker-compose.dcproj", "{E51AE39F-906B-43A0-B84C-87C090CBC6FB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3C79CF80-0AD9-42A5-8FA8-6B75170A037F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3C79CF80-0AD9-42A5-8FA8-6B75170A037F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3C79CF80-0AD9-42A5-8FA8-6B75170A037F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3C79CF80-0AD9-42A5-8FA8-6B75170A037F}.Release|Any CPU.Build.0 = Release|Any CPU + {E51AE39F-906B-43A0-B84C-87C090CBC6FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E51AE39F-906B-43A0-B84C-87C090CBC6FB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E51AE39F-906B-43A0-B84C-87C090CBC6FB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E51AE39F-906B-43A0-B84C-87C090CBC6FB}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {EB867682-F5B3-445D-887B-C39BEA7452A9} + EndGlobalSection +EndGlobal diff --git a/APIBook/APIBook/APIBook.csproj b/APIBook/APIBook/APIBook.csproj new file mode 100644 index 00000000..bfd373a0 --- /dev/null +++ b/APIBook/APIBook/APIBook.csproj @@ -0,0 +1,36 @@ + + + + net6.0 + enable + enable + ecb3b24a-4605-4a48-a09b-7da3b33965f5 + Linux + ..\docker-compose.dcproj + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + + + diff --git a/APIBook/APIBook/Authorization/Auth.cs b/APIBook/APIBook/Authorization/Auth.cs new file mode 100644 index 00000000..8420af29 --- /dev/null +++ b/APIBook/APIBook/Authorization/Auth.cs @@ -0,0 +1,46 @@ +using APIBook.Repository; +using Microsoft.IdentityModel.Tokens; +using System.IdentityModel.Tokens.Jwt; +using System.Security.Claims; +using System.Text; + +namespace APIBook +{ + public class JwtAuth + { + private readonly string _key; + + + public JwtAuth(string key) + { + _key = key; + } + + public string Authenticate(string username, string password) + { + User user_loggin = UserRepository.Get(username, password); // Pegar o usuario do pseudo repositorio. + + + JwtSecurityTokenHandler token_handle = new JwtSecurityTokenHandler(); + + var token_key = Encoding.ASCII.GetBytes(_key); + + SecurityTokenDescriptor token_descriptor = new SecurityTokenDescriptor + { + Subject = new ClaimsIdentity(new Claim[] + { + new Claim(ClaimTypes.Name, user_loggin.Username), // objetos utilizado para formar a token unica do usuario. + new Claim(ClaimTypes.Role, user_loggin.Role) + }), + Expires = DateTime.UtcNow.AddHours(1), // limita a token por uma hora + SigningCredentials = new SigningCredentials( + new SymmetricSecurityKey(token_key), + SecurityAlgorithms.HmacSha256Signature) + }; + + var token = token_handle.CreateToken(token_descriptor); + + return token_handle.WriteToken(token); // trasnformar class da token em string + } + } +} diff --git a/APIBook/APIBook/Controller/BookController.cs b/APIBook/APIBook/Controller/BookController.cs new file mode 100644 index 00000000..3f4bdd5f --- /dev/null +++ b/APIBook/APIBook/Controller/BookController.cs @@ -0,0 +1,133 @@ +using APIBook.Model; +using APIBook.Repository; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace APIBook.Controllers +{ + [Route("api/[controller]")] + [ApiController] + public class BookController : ControllerBase + { + private readonly JwtAuth _jwtAuthentication; + private readonly IBookRepository _bookRepository; + public BookController(IBookRepository bookRepository, JwtAuth auth) + { + _bookRepository = bookRepository; + _jwtAuthentication = auth; + } + + + + // Qualquer usuario logado ou não pode utilizar + [HttpGet] + public async Task> GetBooks() + { + var b = await _bookRepository.Get(); // Pegando a lista de livros representado por b + return b.OrderBy(x => x.Title); // Ordenar a ordem em Acresente pelo TITULO como julgado no teste + } + + + // Apenas usuarios autenticados podem usar + [Authorize] + [HttpGet("{id}")] + public async Task> GetBook(int id) + { + Book? book = await _bookRepository.GetById(id); // irar chamar a função de get by ID e procurar na DB + + if (book == null) // Se nesse caso retornar nenhum livro a variavel nomeada book sera nulla nesse caso deve se esperar o retorno NotFound codigo 404 + return NotFound(); + + return book; // Caso contrario e encontrar algum livro do ID em questão é necessario retornar o objeto ao usuario + } + + + [Authorize (Roles = "admin,user")] + [HttpGet("(Title){Title}")] // Esse argumento (Title) vai ser o indentificador da função para diferenciar a do ID + public async Task> GetBook(string Title) + { + var b = await _bookRepository.GetByName(Title); // Irar procurar na db qualquer livro que contem esse titulo sendo inteiro ou em pedaços + return b; + } + + + + + + + // Apenas o ADMIN pode usar para postar, atualizar e deletar, respeite o admin. https://youtu.be/yxq0ZnjEENs + [Authorize(Roles = "admin")] + [HttpPost] + public async Task> PostBook([FromBody] Book book) + { + var books = await _bookRepository.Get(); + Book? new_book = new Book(); + bool found = false; + foreach (Book b in books) + { + if (b.Date == book.Date && b.Title.ToLower() == book.Title.ToLower()) + { + found = true; + break; + } + } + + if (!found) + { + new_book = await _bookRepository.Create(book); + return CreatedAtAction(nameof(GetBook), new { id = new_book.Id }, new_book); + + } + + + return NoContent(); + } + + [Authorize(Roles = "admin")] + [HttpDelete("{id}")] + public async Task Delete(int id) + { + Book? book = await _bookRepository.GetById(id); + if (book == null) + return NotFound(); + + await _bookRepository.Delete(id); + + return NoContent(); + } + + + [Authorize(Roles = "admin")] + [HttpPut("{id}")] + public async Task PutBooks(int id, [FromBody] Book book) + { + if (id == book.Id) + { + await _bookRepository.Update(book); + return Ok(book); + } + + + return NoContent(); + } + + // Qualquer anonimo pode autorizar + [AllowAnonymous] + [HttpPost("Auth")] + + public async Task> AuthUser([FromBody] User user) + { + string? token = _jwtAuthentication.Authenticate(user.Username, user.Password); + if (token == null) + return Unauthorized(); + + return new { + + usuario = user.Username, + tokken = token + }; + + } + } + +} diff --git a/APIBook/APIBook/Dockerfile b/APIBook/APIBook/Dockerfile new file mode 100644 index 00000000..7caca2a9 --- /dev/null +++ b/APIBook/APIBook/Dockerfile @@ -0,0 +1,20 @@ +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src +COPY ["APIBook/APIBook.csproj", "APIBook/"] +RUN dotnet restore "APIBook/APIBook.csproj" +COPY . . +WORKDIR "/src/APIBook" +RUN dotnet build "APIBook.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "APIBook.csproj" -c Release -o /app/publish /p:UseAppHost=false + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "APIBook.dll"] \ No newline at end of file diff --git a/APIBook/APIBook/Migrations/20221112182723_booksDB.Designer.cs b/APIBook/APIBook/Migrations/20221112182723_booksDB.Designer.cs new file mode 100644 index 00000000..23487862 --- /dev/null +++ b/APIBook/APIBook/Migrations/20221112182723_booksDB.Designer.cs @@ -0,0 +1,57 @@ +// +using APIBook.Model; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace APIBook.Migrations +{ + [DbContext(typeof(BookContext))] + [Migration("20221112182723_booksDB")] + partial class booksDB + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("APIBook.Model.Book", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Author") + .HasColumnType("nvarchar(max)"); + + b.Property("Date") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Saga") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Books"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/APIBook/APIBook/Migrations/20221112182723_booksDB.cs b/APIBook/APIBook/Migrations/20221112182723_booksDB.cs new file mode 100644 index 00000000..d81d1566 --- /dev/null +++ b/APIBook/APIBook/Migrations/20221112182723_booksDB.cs @@ -0,0 +1,38 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace APIBook.Migrations +{ + /// + public partial class booksDB : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Books", + columns: table => new + { + Id = table.Column(type: "int", nullable: false) + .Annotation("SqlServer:Identity", "1, 1"), + Title = table.Column(type: "nvarchar(max)", nullable: true), + Saga = table.Column(type: "nvarchar(max)", nullable: true), + Description = table.Column(type: "nvarchar(max)", nullable: true), + Author = table.Column(type: "nvarchar(max)", nullable: true), + Date = table.Column(type: "nvarchar(max)", nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Books", x => x.Id); + }); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Books"); + } + } +} diff --git a/APIBook/APIBook/Migrations/BookContextModelSnapshot.cs b/APIBook/APIBook/Migrations/BookContextModelSnapshot.cs new file mode 100644 index 00000000..eac6cef0 --- /dev/null +++ b/APIBook/APIBook/Migrations/BookContextModelSnapshot.cs @@ -0,0 +1,54 @@ +// +using APIBook.Model; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace APIBook.Migrations +{ + [DbContext(typeof(BookContext))] + partial class BookContextModelSnapshot : ModelSnapshot + { + protected override void BuildModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "7.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("APIBook.Model.Book", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("int"); + + SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + + b.Property("Author") + .HasColumnType("nvarchar(max)"); + + b.Property("Date") + .HasColumnType("nvarchar(max)"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Saga") + .HasColumnType("nvarchar(max)"); + + b.Property("Title") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.ToTable("Books"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/APIBook/APIBook/Model/Book.cs b/APIBook/APIBook/Model/Book.cs new file mode 100644 index 00000000..68790ffb --- /dev/null +++ b/APIBook/APIBook/Model/Book.cs @@ -0,0 +1,12 @@ +namespace APIBook.Model +{ + public class Book + { + public int Id { get; set; } + public string? Title { get; set; } + public string? Saga { get; set; } + public string? Description { get; set; } + public string? Author { get; set; } + public string? Date { get; set; } + } +} diff --git a/APIBook/APIBook/Model/BookContext.cs b/APIBook/APIBook/Model/BookContext.cs new file mode 100644 index 00000000..dbf23cc1 --- /dev/null +++ b/APIBook/APIBook/Model/BookContext.cs @@ -0,0 +1,14 @@ +using Microsoft.EntityFrameworkCore; + +namespace APIBook.Model +{ + public class BookContext : DbContext + { + public DbSet? Books { get; set; } // O banco de dados + public BookContext(DbContextOptions options) : base(options) + { + + } + + } +} diff --git a/APIBook/APIBook/Model/User.cs b/APIBook/APIBook/Model/User.cs new file mode 100644 index 00000000..b2709d52 --- /dev/null +++ b/APIBook/APIBook/Model/User.cs @@ -0,0 +1,13 @@ +namespace APIBook +{ + + public class User + { + public int ID { get; set; } = 0; + public string Username { get; set; } = string.Empty; + + public string Password { get; set; } = string.Empty; + + public string Role { get; set; } = string.Empty; + } +} \ No newline at end of file diff --git a/APIBook/APIBook/Program.cs b/APIBook/APIBook/Program.cs new file mode 100644 index 00000000..69885efe --- /dev/null +++ b/APIBook/APIBook/Program.cs @@ -0,0 +1,86 @@ +using APIBook.Model; +using APIBook.Repository; +using APIBook.Services; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.EntityFrameworkCore; +using Microsoft.IdentityModel.Tokens; +using Serilog; +using System.Text; + +namespace APIBook +{ + public class Program + { + public static void Main(string[] args) + { + var builder = WebApplication.CreateBuilder(args); + + + Log.Logger = (Serilog.ILogger)new LoggerConfiguration() + .WriteTo.File("programlogs/log.txt", Serilog.Events.LogEventLevel.Information) + //.WriteTo.Console() + .CreateLogger(); + + + + builder.Services.AddControllers(); + // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle + builder.Services.AddEndpointsApiExplorer(); + builder.Services.AddSwaggerGen(c => + { + c.SwaggerDoc("V0.0.1 Dirty", new Microsoft.OpenApi.Models.OpenApiInfo { Title = "YOUNG BOOKS API", Version = "v0.0.1 Dirty" }); + }); + builder.Services.AddScoped(); + var connectionString = builder.Configuration.GetConnectionString("DefaultConnection"); + + builder.Services.AddDbContext(db => db.UseSqlServer(connectionString)); + + + string key = "$$os_seguredos_dos_admins1337_iaiaiaiaiaiii$$"; // chave + + builder.Services.AddAuthentication(c => { + c.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; + c.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; + }).AddJwtBearer(c => + { + c.RequireHttpsMetadata = false; + c.SaveToken = true; + c.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters + { + IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(key)), + ValidateIssuerSigningKey = true, + ValidateIssuer = false, + ValidateAudience = false + }; + }); + + + builder.Services.AddSingleton(new JwtAuth(key)); // adiciona a chave para a cripotgrafia para o token + + builder.Host.UseSerilog(Log.Logger); // adicionar o Serilog como sistema de logs + + var app = builder.Build(); + + //create db + DataBaseMigrateService.MigrationInitialsation(app); // criar a o banco de dado caso não tenha + + // Configure the HTTP request pipeline. + if (app.Environment.IsDevelopment()) + { + app.UseSwagger(); + } + app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/V0.0.1 Dirty/swagger.json", "YOUNG BOOKS API v0.0.1 Dirty")); + + + app.UseHttpsRedirection(); + + app.UseAuthentication(); + app.UseAuthorization(); + + + app.MapControllers(); + + app.Run(); + } + } +} \ No newline at end of file diff --git a/APIBook/APIBook/Properties/launchSettings.json b/APIBook/APIBook/Properties/launchSettings.json new file mode 100644 index 00000000..d1eea4e0 --- /dev/null +++ b/APIBook/APIBook/Properties/launchSettings.json @@ -0,0 +1,38 @@ +{ + "profiles": { + "APIBook": { + "commandName": "Project", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + }, + "dotnetRunMessages": true, + "applicationUrl": "https://localhost:7190;http://localhost:5297" + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "launchUrl": "swagger", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "Docker": { + "commandName": "Docker", + "launchBrowser": true, + "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/swagger", + "publishAllPorts": true, + "useSSL": true + } + }, + "$schema": "https://json.schemastore.org/launchsettings.json", + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:22894", + "sslPort": 44317 + } + } +} \ No newline at end of file diff --git a/APIBook/APIBook/Repository/BookRepository.cs b/APIBook/APIBook/Repository/BookRepository.cs new file mode 100644 index 00000000..960a2abc --- /dev/null +++ b/APIBook/APIBook/Repository/BookRepository.cs @@ -0,0 +1,64 @@ +using APIBook.Model; +using Microsoft.EntityFrameworkCore; + +namespace APIBook.Repository +{ + public class BookRepository : IBookRepository + { + public readonly BookContext _ctx; + public BookRepository(BookContext context) + { + _ctx = context; + } + + //Metodos asyncronos + async Task IBookRepository.Create(Book book) + { + if (_ctx.Books == null) + return book; + + await _ctx.Books.AddAsync(book); + await _ctx.SaveChangesAsync(); + return book; + } + + async Task IBookRepository.Delete(int id) + { + + Book? book_for_delete = await _ctx.Books.FindAsync(id); + if (book_for_delete != null) + { + _ = _ctx.Remove(book_for_delete); + await _ctx.SaveChangesAsync(); + } + } + + async Task> IBookRepository.Get() + { + return await _ctx.Books.ToListAsync(); + } + + async Task> IBookRepository.GetByName(string title) + { + var books = await _ctx.Books.ToListAsync(); + foreach (var b in books) + { + if (!b.Title.Contains(title)) + books.Remove(b); + } + + return books; + } + + async Task IBookRepository.GetById(int id) + { + return await _ctx.Books.FindAsync(id); + } + + async Task IBookRepository.Update(Book book) + { + _ctx.Entry(book).State = EntityState.Modified; + await _ctx.SaveChangesAsync(); + } + } +} diff --git a/APIBook/APIBook/Repository/IBookRepository.cs b/APIBook/APIBook/Repository/IBookRepository.cs new file mode 100644 index 00000000..84274a51 --- /dev/null +++ b/APIBook/APIBook/Repository/IBookRepository.cs @@ -0,0 +1,16 @@ +using APIBook.Model; +using Microsoft.EntityFrameworkCore; + +namespace APIBook.Repository +{ + public interface IBookRepository + { + public Task> Get(); + public Task> GetByName(string title); + public Task GetById(int id); + public Task Create(Book book); + public Task Update(Book book); + public Task Delete(int id); + } + +} diff --git a/APIBook/APIBook/Repository/UserRepository.cs b/APIBook/APIBook/Repository/UserRepository.cs new file mode 100644 index 00000000..1024052b --- /dev/null +++ b/APIBook/APIBook/Repository/UserRepository.cs @@ -0,0 +1,17 @@ +namespace APIBook.Repository +{ + // Simulação de um banco de dados com usuarios simples + public static class UserRepository + { + public static User Get(string username, string password) + { + var users = new List(); + // demo user e admin + users.Add(new User { ID = 0, Username = "Admin", Password = "AIAIAIAI", Role = "admin" }); + users.Add(new User { ID = 1, Username = "shadowy", Password = "123", Role = "user" }); + return users.Where(x => x.Username.ToLower() == username.ToLower() && x.Password == password).First(); + } + + } + +} diff --git a/APIBook/APIBook/Services/DataBaseMigrateService.cs b/APIBook/APIBook/Services/DataBaseMigrateService.cs new file mode 100644 index 00000000..1464e0e3 --- /dev/null +++ b/APIBook/APIBook/Services/DataBaseMigrateService.cs @@ -0,0 +1,20 @@ +using APIBook.Model; +using Microsoft.EntityFrameworkCore; + + +namespace APIBook.Services +{ + public static class DataBaseMigrateService + { + public static void MigrationInitialsation(this IApplicationBuilder applicationBuilder) + { + using (var service_scope = applicationBuilder.ApplicationServices.CreateScope()) + { + var service_db = service_scope.ServiceProvider.GetService(); + + + service_db.Database.Migrate(); //migrar o banco de dados caso não exista + } + } + } +} diff --git a/APIBook/APIBook/appsettings.Development.json b/APIBook/APIBook/appsettings.Development.json new file mode 100644 index 00000000..045fa358 --- /dev/null +++ b/APIBook/APIBook/appsettings.Development.json @@ -0,0 +1,15 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + + "AllowedHosts": "*", + + "ConnectionStrings": { + "DefaultConnection": "Trust Server Certificate=True; User ID=sa; Password=shadowy123;Persist Security Info=True;Initial Catalog=booksDB; Data Source=sqldata" + + } +} diff --git a/APIBook/APIBook/appsettings.json b/APIBook/APIBook/appsettings.json new file mode 100644 index 00000000..2261aee8 --- /dev/null +++ b/APIBook/APIBook/appsettings.json @@ -0,0 +1,14 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + + "AllowedHosts": "*", + + "ConnectionStrings": { + "DefaultConnection": "Trust Server Certificate=True; Password=shadowy123;Persist Security Info=True; User ID=SA;Initial Catalog=booksDB; Data Source=sqldata" + } +} diff --git a/APIBook/Dockerfile b/APIBook/Dockerfile new file mode 100644 index 00000000..a123a5b7 --- /dev/null +++ b/APIBook/Dockerfile @@ -0,0 +1,20 @@ +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src +COPY ["APIBook/APIBook.csproj", "APIBook/"] +RUN dotnet restore "APIBook/APIBook.csproj" +COPY . . +WORKDIR "/src/APIBook" +RUN dotnet build "APIBook.csproj" -c Release -o app + +FROM build AS publish +RUN dotnet publish "APIBook.csproj" -c Release -o /app/publish + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "APIBook.dll"] \ No newline at end of file diff --git a/APIBook/docker-compose.dcproj b/APIBook/docker-compose.dcproj new file mode 100644 index 00000000..038e2f90 --- /dev/null +++ b/APIBook/docker-compose.dcproj @@ -0,0 +1,18 @@ + + + + 2.1 + Linux + e51ae39f-906b-43a0-b84c-87c090cbc6fb + LaunchBrowser + {Scheme}://localhost:{ServicePort}/swagger + apibook + + + + docker-compose.yml + + + + + \ No newline at end of file diff --git a/APIBook/docker-compose.override.yml b/APIBook/docker-compose.override.yml new file mode 100644 index 00000000..73614da8 --- /dev/null +++ b/APIBook/docker-compose.override.yml @@ -0,0 +1,13 @@ +version: '3.4' + +services: + apibook: + environment: + - ASPNETCORE_ENVIRONMENT=Development + - ASPNETCORE_URLS=https://+:443;http://+:80 + ports: + - "80" + - "443" + volumes: + - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro + - ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro \ No newline at end of file diff --git a/APIBook/docker-compose.yml b/APIBook/docker-compose.yml new file mode 100644 index 00000000..237b333b --- /dev/null +++ b/APIBook/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.4' + +services: + apibook: + image: ${DOCKER_REGISTRY-}apibook + build: + context: . + dockerfile: APIBook/Dockerfile + volumes: + - .\programlog:/programlog + depends_on: + - sqldata + + sqldata: + image: mcr.microsoft.com/mssql/server:2022-latest + environment: + - ACCEPT_EULA=Y + - MSSQL_SA_PASSWORD=shadowy123 + volumes: + - .\dbo:/var/opt/mssql/data + ports: + - "1433:1433" \ No newline at end of file diff --git a/APIBook/launchSettings.json b/APIBook/launchSettings.json new file mode 100644 index 00000000..f1261dba --- /dev/null +++ b/APIBook/launchSettings.json @@ -0,0 +1,12 @@ +{ + "profiles": { + "Docker Compose": { + "commandName": "DockerCompose", + "commandVersion": "1.0", + "serviceActions": { + "apibook": "StartDebugging", + "sqldata": "StartWithoutDebugging" + } + } + } +} \ No newline at end of file diff --git "a/Curr\303\255culo.pdf" "b/Curr\303\255culo.pdf" new file mode 100644 index 0000000000000000000000000000000000000000..92906a6783b63607882f6326f6ede109cb9aa836 GIT binary patch literal 70011 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

~pM)=U2toAI@+1q~}Zm}q|XjPL; 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 literal 0 HcmV?d00001 From 3d1065770c41bce4d05a1b353f0ccb3e82547e8b Mon Sep 17 00:00:00 2001 From: SrShadowy <43967231+SrShadowy@users.noreply.github.com> Date: Sat, 12 Nov 2022 22:52:21 -0300 Subject: [PATCH 2/4] Update BookRepository.cs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correção rapida do GetByName --- APIBook/APIBook/Repository/BookRepository.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/APIBook/APIBook/Repository/BookRepository.cs b/APIBook/APIBook/Repository/BookRepository.cs index 960a2abc..07a81784 100644 --- a/APIBook/APIBook/Repository/BookRepository.cs +++ b/APIBook/APIBook/Repository/BookRepository.cs @@ -41,13 +41,17 @@ async Task> IBookRepository.Get() async Task> IBookRepository.GetByName(string title) { var books = await _ctx.Books.ToListAsync(); + List books_ = new List(); foreach (var b in books) { - if (!b.Title.Contains(title)) - books.Remove(b); + if (b.Title == null) + continue; + + if (b.Title.Contains(title)) + books_.Add(b); } - return books; + return books_; } async Task IBookRepository.GetById(int id) From 272b3d525fadb2ed0a6f583ec1e93184a72047ee Mon Sep 17 00:00:00 2001 From: SrShadowy <43967231+SrShadowy@users.noreply.github.com> Date: Mon, 14 Nov 2022 19:32:47 -0300 Subject: [PATCH 3/4] Resolver Warnings Retirada dos avisos --- APIBook/APIBook/Controller/BookController.cs | 61 +++++++++---------- APIBook/APIBook/Repository/BookRepository.cs | 49 ++++++++++----- APIBook/APIBook/Repository/IBookRepository.cs | 12 ++-- .../Services/DataBaseMigrateService.cs | 4 +- 4 files changed, 72 insertions(+), 54 deletions(-) diff --git a/APIBook/APIBook/Controller/BookController.cs b/APIBook/APIBook/Controller/BookController.cs index 3f4bdd5f..5b2513d8 100644 --- a/APIBook/APIBook/Controller/BookController.cs +++ b/APIBook/APIBook/Controller/BookController.cs @@ -21,10 +21,13 @@ public BookController(IBookRepository bookRepository, JwtAuth auth) // Qualquer usuario logado ou não pode utilizar [HttpGet] - public async Task> GetBooks() + public async Task> GetBooks() { var b = await _bookRepository.Get(); // Pegando a lista de livros representado por b - return b.OrderBy(x => x.Title); // Ordenar a ordem em Acresente pelo TITULO como julgado no teste + if(b == null) + return NoContent(); + + return Ok(b.OrderBy(x => x.Title)); // Ordenar a ordem em Acresente pelo TITULO como julgado no teste } @@ -38,22 +41,20 @@ public async Task> GetBook(int id) if (book == null) // Se nesse caso retornar nenhum livro a variavel nomeada book sera nulla nesse caso deve se esperar o retorno NotFound codigo 404 return NotFound(); - return book; // Caso contrario e encontrar algum livro do ID em questão é necessario retornar o objeto ao usuario + return Ok(book); // Caso contrario e encontrar algum livro do ID em questão é necessario retornar o objeto ao usuario } [Authorize (Roles = "admin,user")] [HttpGet("(Title){Title}")] // Esse argumento (Title) vai ser o indentificador da função para diferenciar a do ID - public async Task> GetBook(string Title) + public async Task> GetBook(string Title) { var b = await _bookRepository.GetByName(Title); // Irar procurar na db qualquer livro que contem esse titulo sendo inteiro ou em pedaços - return b; - } - - - - + if(b == null) + return NotFound(); + return Ok(b); + } // Apenas o ADMIN pode usar para postar, atualizar e deletar, respeite o admin. https://youtu.be/yxq0ZnjEENs [Authorize(Roles = "admin")] @@ -61,10 +62,16 @@ public async Task> GetBook(string Title) public async Task> PostBook([FromBody] Book book) { var books = await _bookRepository.Get(); + if(books == null) + return NoContent(); + Book? new_book = new Book(); bool found = false; foreach (Book b in books) { + if(b.Title == null || book.Title == null) + continue; + if (b.Date == book.Date && b.Title.ToLower() == book.Title.ToLower()) { found = true; @@ -72,15 +79,14 @@ public async Task> PostBook([FromBody] Book book) } } - if (!found) - { - new_book = await _bookRepository.Create(book); - return CreatedAtAction(nameof(GetBook), new { id = new_book.Id }, new_book); - - } + if (found) + return NoContent(); + new_book = await _bookRepository.Create(book); + if(new_book == null) + return NoContent(); - return NoContent(); + return CreatedAtAction(nameof(GetBook), new { id = new_book.Id }, new_book); } [Authorize(Roles = "admin")] @@ -101,32 +107,25 @@ public async Task> PostBook([FromBody] Book book) [HttpPut("{id}")] public async Task PutBooks(int id, [FromBody] Book book) { - if (id == book.Id) - { - await _bookRepository.Update(book); - return Ok(book); - } - + if (id != book.Id) + return NoContent(); - return NoContent(); + await _bookRepository.Update(book); + return Ok(book); } // Qualquer anonimo pode autorizar [AllowAnonymous] [HttpPost("Auth")] - - public async Task> AuthUser([FromBody] User user) + public ActionResult AuthUser([FromBody] User user) { string? token = _jwtAuthentication.Authenticate(user.Username, user.Password); if (token == null) return Unauthorized(); - - return new { - + return Ok(new { usuario = user.Username, tokken = token - }; - + }); } } diff --git a/APIBook/APIBook/Repository/BookRepository.cs b/APIBook/APIBook/Repository/BookRepository.cs index 07a81784..935ea502 100644 --- a/APIBook/APIBook/Repository/BookRepository.cs +++ b/APIBook/APIBook/Repository/BookRepository.cs @@ -12,7 +12,7 @@ public BookRepository(BookContext context) } //Metodos asyncronos - async Task IBookRepository.Create(Book book) + async Task IBookRepository.Create(Book book) { if (_ctx.Books == null) return book; @@ -22,24 +22,19 @@ async Task IBookRepository.Create(Book book) return book; } - async Task IBookRepository.Delete(int id) + async Task?> IBookRepository.Get() { - - Book? book_for_delete = await _ctx.Books.FindAsync(id); - if (book_for_delete != null) - { - _ = _ctx.Remove(book_for_delete); - await _ctx.SaveChangesAsync(); - } + if(_ctx.Books == null) + return null; + + return await _ctx.Books.ToListAsync(); } - async Task> IBookRepository.Get() + async Task?> IBookRepository.GetByName(string title) { - return await _ctx.Books.ToListAsync(); - } + if(_ctx.Books == null) + return null; - async Task> IBookRepository.GetByName(string title) - { var books = await _ctx.Books.ToListAsync(); List books_ = new List(); foreach (var b in books) @@ -56,13 +51,37 @@ async Task> IBookRepository.GetByName(string title) async Task IBookRepository.GetById(int id) { + if(_ctx.Books == null) + return null; + return await _ctx.Books.FindAsync(id); } - async Task IBookRepository.Update(Book book) + + async Task IBookRepository.Delete(int id) + { + if(_ctx.Books == null) + return false; + + Book? book_for_delete = await _ctx.Books.FindAsync(id); + + if(book_for_delete == null) + return false; + + _ = _ctx.Remove(book_for_delete); + await _ctx.SaveChangesAsync(); + return true; + } + + + async Task IBookRepository.Update(Book book) { + if(_ctx.Books == null) + return false; + _ctx.Entry(book).State = EntityState.Modified; await _ctx.SaveChangesAsync(); + return true; } } } diff --git a/APIBook/APIBook/Repository/IBookRepository.cs b/APIBook/APIBook/Repository/IBookRepository.cs index 84274a51..15e3e4bf 100644 --- a/APIBook/APIBook/Repository/IBookRepository.cs +++ b/APIBook/APIBook/Repository/IBookRepository.cs @@ -5,12 +5,12 @@ namespace APIBook.Repository { public interface IBookRepository { - public Task> Get(); - public Task> GetByName(string title); - public Task GetById(int id); - public Task Create(Book book); - public Task Update(Book book); - public Task Delete(int id); + public Task?> Get(); + public Task?> GetByName(string title); + public Task GetById(int id); + public Task Create(Book book); + public Task Update(Book book); + public Task Delete(int id); } } diff --git a/APIBook/APIBook/Services/DataBaseMigrateService.cs b/APIBook/APIBook/Services/DataBaseMigrateService.cs index 1464e0e3..2e53fced 100644 --- a/APIBook/APIBook/Services/DataBaseMigrateService.cs +++ b/APIBook/APIBook/Services/DataBaseMigrateService.cs @@ -12,8 +12,8 @@ public static void MigrationInitialsation(this IApplicationBuilder applicationBu { var service_db = service_scope.ServiceProvider.GetService(); - - service_db.Database.Migrate(); //migrar o banco de dados caso não exista + if(service_db != null) + service_db.Database.Migrate(); //migrar o banco de dados caso não exista } } } From b7b40b0b43087cf7b89de7d5cac908c13be054f5 Mon Sep 17 00:00:00 2001 From: SrShadowy <43967231+SrShadowy@users.noreply.github.com> Date: Tue, 16 May 2023 11:17:51 -0300 Subject: [PATCH 4/4] =?UTF-8?q?Delete=20Curr=C3=ADculo.pdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "Curr\303\255culo.pdf" | Bin 70011 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 "Curr\303\255culo.pdf" diff --git "a/Curr\303\255culo.pdf" "b/Curr\303\255culo.pdf" deleted file mode 100644 index 92906a6783b63607882f6326f6ede109cb9aa836..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70011 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

~pM)=U2toAI@+1q~}Zm}q|XjPL; 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