using Microsoft.Extensions.Primitives; using RelayCore.Services; namespace RelayCore.Endpoints; public static class AuthEndpoints { public static void MapAuthEndpoints(this WebApplication app) { app.MapPost("/user/signin", async (AuthSignin request, APIAuthService service, HttpContext context) => { string ip = ""; StringValues userAgent = ""; if (context != null) { ip = context.Connection.RemoteIpAddress?.MapToIPv4().ToString(); context.Request.Headers.TryGetValue("User-Agent", out userAgent); } var token = await service.UserSigninAsync(request, ip, userAgent.ToString()); return token != null ? Results.Ok(token) : Results.Unauthorized(); }); app.MapGet("/users", async (APIAuthService service) => { return Results.Ok(service.GetUsersAsync()); }); app.MapPost("/user/register", async (AuthRegister request, APIAuthService service, HttpContext context) => { var ip = context.Connection.RemoteIpAddress?.MapToIPv4().ToString(); context.Request.Headers.TryGetValue("User-Agent", out var userAgent); var token = await service.UserRegisterAsync(request, ip, userAgent); return token != null ? Results.Ok(token) : Results.Ok("Username or Email already exists!"); }); app.MapPost("/server/verify/user", async (AuthUserVerify request, APIAuthService service) => { bool valid = await service.ServerVerifyUser(request); return Results.Ok(valid); }); app.MapPost("/server/verify/license", async (AuthServerLicense request, APIAuthService service) => { throw new NotImplementedException(); }); } } public class AuthSignin { public string UserName { get; set; } public string Password { get; set; } } public class AuthRegister { public string Username { get; set; } public string Password { get; set; } public string Email { get; set; } } public class AuthUserVerify { public string Username { get; set; } public string Token { get; set; } } public class AuthServerLicense { public string License { get; set; } }