using AuthHex.Models; using AuthHex.Models.IOs; using AuthHex.Services.RecoveryManager; using System.Text.Json; namespace AuthHex.Services.FunctionHandler { public class RecoveryManager { public readonly Dictionary>> _functionHandler; public RecoveryManager(RecoveryManagerService RecoveryManagerService) { _functionHandler = new() { { "forgotPassword", RecoveryManagerService.ForgotPassword }, { "verifyOTP", RecoveryManagerService.VerifyOTP }, { "resetPasswordWithToken", RecoveryManagerService.ResetPasswordWithToken }, { "resetPassword", RecoveryManagerService.ResetPassword } }; } public async Task Execute(ApiRequest request, HttpContext httpContext) { if (!_functionHandler.TryGetValue(request.FunctionName, out var handler)) { return new ApiResponse { StatusCode = 404, Message = $"Function '{request.FunctionName}' not found.", Data = null }; } try { var results = await handler(request.Payload, httpContext); return new ApiResponse { StatusCode = 200, Message = "success", Data = results }; } catch (KeyNotFoundException ex) { return new ApiResponse { StatusCode = 400, Message = ex.Message, Data = null }; } catch (InvalidOperationException ex) { return new ApiResponse { StatusCode = 400, Message = ex.Message, Data = null }; } catch (ArgumentException ex) { return new ApiResponse { StatusCode = 500, Message = ex.Message, Data = null }; } } } }