Adding multiple projects & API

This commit is contained in:
2023-11-19 16:41:00 -03:00
parent 91e36a811d
commit 441bcc4e96
16 changed files with 297 additions and 3 deletions

View File

@@ -0,0 +1,22 @@
using Microsoft.AspNetCore.Mvc;
namespace Kasbot.API.Controllers
{
[ApiController]
[Route("[controller]")]
public class ReadinessController : ControllerBase
{
private readonly ILogger<ReadinessController> logger;
public ReadinessController(ILogger<ReadinessController> logger)
{
this.logger = logger;
}
[HttpGet(Name = "readiness")]
public IActionResult GetReadiness()
{
return Ok();
}
}
}

View File

@@ -0,0 +1,24 @@
using Kasbot.API.Services;
using Microsoft.AspNetCore.Mvc;
namespace Kasbot.API.Controllers
{
[ApiController]
[Route("api/[controller]")]
public class StatusController : Controller
{
private readonly StatusService statusService;
public StatusController(StatusService statusService)
{
this.statusService = statusService;
}
[HttpGet("ok")]
public async Task<IActionResult> IsOk()
{
var result = await statusService.IsOk();
return Ok(result);
}
}
}

22
Kasbot.API/Dockerfile Normal file
View File

@@ -0,0 +1,22 @@
#See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
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 ["Kasbot.API/Kasbot.API.csproj", "Kasbot.API/"]
RUN dotnet restore "Kasbot.API/Kasbot.API.csproj"
COPY . .
WORKDIR "/src/Kasbot.API"
RUN dotnet build "Kasbot.API.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "Kasbot.API.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "Kasbot.API.dll"]

View File

@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<UserSecretsId>a8c1813f-fb5a-4771-868e-60e280ccaf77</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.25.1" />
<PackageReference Include="Grpc.Net.Client" Version="2.59.0" />
<PackageReference Include="Grpc.Tools" Version="2.59.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.18.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Kasbot.APP\Kasbot.App.csproj" />
</ItemGroup>
<ItemGroup>
<Protobuf Include="../Proto/status.proto" GrpcServices="Kasbot.API" Link="Protos\status.proto" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ActiveDebugProfile>Kasbot.API</ActiveDebugProfile>
<Controller_SelectedScaffolderID>MvcControllerEmptyScaffolder</Controller_SelectedScaffolderID>
<Controller_SelectedScaffolderCategoryPath>root/Common/MVC/Controller</Controller_SelectedScaffolderCategoryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

34
Kasbot.API/Program.cs Normal file
View File

@@ -0,0 +1,34 @@
using Kasbot.API.Services;
internal class Program
{
private static void Main(string[] args)
{
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();
builder.Services.AddScoped<StatusService>();
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();
}
}

View File

@@ -0,0 +1,38 @@
{
"profiles": {
"Kasbot.API": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"dotnetRunMessages": true,
"applicationUrl": "https://localhost:7174;http://localhost:5276"
},
"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:47958",
"sslPort": 44359
}
}
}

View File

@@ -0,0 +1,19 @@
using Status;
using Grpc.Net.Client;
namespace Kasbot.API.Services
{
public class StatusService
{
public StatusService() { }
public async Task<bool> IsOk()
{
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new StatusRequester.StatusRequesterClient(channel);
var reply = await client.SayHelloAsync(new HelloRequest { Name = "GreeterClient" });
return reply.Message == "Hello GreeterClient";
}
}
}

View File

@@ -0,0 +1,9 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}