using Chtn.CSharp.SDK.Core; using Chtn.CSharp.SDK.Models.Auth; using Chtn.CSharp.SDK.Models.Session; using System; using System.Threading.Tasks; namespace Chtn.CSharp.SDK.Services { public interface IAuthService { Task GetAuthMethods(GetAuthMethodsReq req); Task OtpSendCode(OtpPleSendCodeReq req); Task OtpVerifyCode(OtpPleVerifyCodeReq req); Task LoginPasswordAuth(LoginPasswordAuthReq req); Task IsUsernameUsed(UnameUsageReq req); Task IsEmailUsed(EmailUsageReq req); Task PleSendVCode(PleSendVCodeReq req); Task PleVerifyCode(PleVerifyCodeReq req); Task FinishPLEAccount(FinishPleAccountReq req); Task LoginWithGoogle(LoginWithGoogleReq req); Task LoginWithApple(LoginWithAppleReq req); Task Register(RegisterReq req); Task ResetPassword(ResetPasswordReq req); Task VerifyResetCode(VerifyPasswordResetReq req); Task ValidateSession(ValidateSessionReq req); } public class AuthServiceProvider : IAuthService { private readonly ApiClient _apiClient; public AuthServiceProvider(ApiClient apiClient) { _apiClient = apiClient; } public async Task GetAuthMethods(GetAuthMethodsReq req) => await _apiClient.PostAsync("user/authOptions", req); public async Task OtpSendCode(OtpPleSendCodeReq req) => await _apiClient.PostAsync("v2/user/otpSendCode", req); public async Task OtpVerifyCode(OtpPleVerifyCodeReq req) => await _apiClient.PostAsync("v2/user/otpVerifyCode", req); public async Task LoginPasswordAuth(LoginPasswordAuthReq req) => await _apiClient.PostAsync("v2/user/loginPasswordAuth", req); public async Task IsUsernameUsed(UnameUsageReq req) => await _apiClient.PostAsync("v2/user/unameUsage", req); public async Task IsEmailUsed(EmailUsageReq req) => await _apiClient.PostAsync("v2/user/emailUsage", req); public async Task PleSendVCode(PleSendVCodeReq req) => await _apiClient.PostAsync("v2/user/pleSendVCode", req); public async Task PleVerifyCode(PleVerifyCodeReq req) => await _apiClient.PostAsync("v2/user/pleVerifyCode", req); public async Task FinishPLEAccount(FinishPleAccountReq req) => await _apiClient.PostAsync("v2/user/finishPLEAccount", req); public async Task LoginWithGoogle(LoginWithGoogleReq req) => await _apiClient.PostAsync("user/loginWithGoogle", req); public async Task LoginWithApple(LoginWithAppleReq req) => await _apiClient.PostAsync("user/loginWithApple", req); public async Task Register(RegisterReq req) => await _apiClient.PostAsync("v2/user/register", req); public async Task ResetPassword(ResetPasswordReq req) => await _apiClient.PostAsync("user/resetPassword", req); public async Task VerifyResetCode(VerifyPasswordResetReq req) => await _apiClient.PostAsync("user/verifyResetCode", req); public async Task ValidateSession(ValidateSessionReq req) => await _apiClient.PostAsync("v2/user/validateSession", req); } }