diff --git a/Server/Calculator.cs b/Server/Calculator.cs index 52eeb4a..ae41dbf 100644 --- a/Server/Calculator.cs +++ b/Server/Calculator.cs @@ -1,7 +1,9 @@ using System.Globalization; +using System.Text.Json.Serialization; namespace GrpcCalculator.Server; +[JsonConverter(typeof(JsonStringEnumConverter))] public enum CalculatorState { AfterEquals, @@ -9,7 +11,7 @@ public enum CalculatorState AfterDigit, } - +[JsonConverter(typeof(JsonStringEnumConverter))] public enum CalculatorOperator { Addition, diff --git a/Server/CalculatorEndpoints.cs b/Server/CalculatorEndpoints.cs new file mode 100644 index 0000000..1915d6e --- /dev/null +++ b/Server/CalculatorEndpoints.cs @@ -0,0 +1,15 @@ +namespace GrpcCalculator.Server; + +public static class CalculatorEndpoints +{ + public static RouteGroupBuilder MapCalculatorApi(this RouteGroupBuilder group) + { + group.MapPost("/operator/{op}", ( + CalculatorOperator op, + Calculator calculator) => calculator.OperatorPressed(op)); + group.MapPost("/equals", (Calculator calculator) => calculator.EqualsPressed()); + group.MapPost("/digit/{digit}", (string digit, Calculator calculator) => calculator.DigitPressed(digit)); + + return group; + } +} diff --git a/Server/Program.cs b/Server/Program.cs index 3751555..78917b1 100644 --- a/Server/Program.cs +++ b/Server/Program.cs @@ -1,2 +1,22 @@ -// See https://aka.ms/new-console-template for more information -Console.WriteLine("Hello, World!"); +using GrpcCalculator.Server; + +var builder = WebApplication.CreateBuilder(args); + +builder.Services.AddEndpointsApiExplorer(); +builder.Services.AddSwaggerGen(); + +var app = builder.Build(); + +if (app.Environment.IsDevelopment()) +{ + app.UseSwagger(); + app.UseSwaggerUI(); +} + +app.UseHttpsRedirection(); + +app.MapGroup("/") + .MapCalculatorApi() + .WithOpenApi(); + +app.Run(); diff --git a/Server/Server.csproj b/Server/Server.csproj index 852245e..cd50f23 100644 --- a/Server/Server.csproj +++ b/Server/Server.csproj @@ -1,12 +1,17 @@ - + - Exe net8.0 enable enable + true GrpcCalculator.Server GrpcCalculator.Server + + + + +