Implement AuthService and ApiClient core logic

This commit is contained in:
2026-04-09 14:22:47 +02:00
parent 3ee4edac6c
commit 8cbfa61766
22 changed files with 503 additions and 13 deletions

77
Services/AuthMethods.cs Normal file
View File

@@ -0,0 +1,77 @@
using System;
using System.Threading.Tasks;
using Chtn.CSharp.SDK.Models.Auth;
using Chtn.CSharp.SDK.Core;
namespace Chtn.CSharp.SDK.Services
{
public interface IAuthService
{
Task<AuthMethods> GetAuthMethods(GetAuthMethodsReq req);
Task OtpSendCode(OtpPleSendCodeReq req);
Task<SignInSuccessResp> OtpVerifyCode(OtpPleVerifyCodeReq req);
Task<SignInSuccessResp> LoginPasswordAuth(LoginPasswordAuthReq req);
Task<UserDataValidationResp> IsUsernameUsed(UnameUsageReq req);
Task<UserDataValidationResp> IsEmailUsed(EmailUsageReq req);
Task PleSendVCode(PleSendVCodeReq req);
Task<PleVerifyCodeResp> PleVerifyCode(PleVerifyCodeReq req);
Task<SignInSuccessResp> FinishPLEAccount(FinishPleAccountReq req);
Task<SignInSuccessResp> LoginWithGoogle(LoginWithGoogleReq req);
Task<SignInSuccessResp> LoginWithApple(LoginWithAppleReq req);
Task<SignInSuccessResp> Register(RegisterReq req);
Task<ResetPasswordResp> ResetPassword(ResetPasswordReq req);
Task VerifyResetCode(VerifyPasswordResetReq req);
}
public class AuthServiceProvider : IAuthService
{
private readonly ApiClient _apiClient;
public AuthServiceProvider(ApiClient apiClient)
{
_apiClient = apiClient;
}
public async Task<AuthMethods> GetAuthMethods(GetAuthMethodsReq req) =>
await _apiClient.PostAsync<GetAuthMethodsReq, AuthMethods>("auth/get-auth-methods", req);
public async Task OtpSendCode(OtpPleSendCodeReq req) =>
await _apiClient.PostAsync<OtpPleSendCodeReq, object>("auth/otp-send-code", req);
public async Task<SignInSuccessResp> OtpVerifyCode(OtpPleVerifyCodeReq req) =>
await _apiClient.PostAsync<OtpPleVerifyCodeReq, SignInSuccessResp>("auth/otp-verify-code", req);
public async Task<SignInSuccessResp> LoginPasswordAuth(LoginPasswordAuthReq req) =>
await _apiClient.PostAsync<LoginPasswordAuthReq, SignInSuccessResp>("auth/login-password-auth", req);
public async Task<UserDataValidationResp> IsUsernameUsed(UnameUsageReq req) =>
await _apiClient.PostAsync<UnameUsageReq, UserDataValidationResp>("auth/is-username-used", req);
public async Task<UserDataValidationResp> IsEmailUsed(EmailUsageReq req) =>
await _apiClient.PostAsync<EmailUsageReq, UserDataValidationResp>("auth/is-email-used", req);
public async Task PleSendVCode(PleSendVCodeReq req) =>
await _apiClient.PostAsync<PleSendVCodeReq, object>("auth/ple-send-vcode", req);
public async Task<PleVerifyCodeResp> PleVerifyCode(PleVerifyCodeReq req) =>
await _apiClient.PostAsync<PleVerifyCodeReq, PleVerifyCodeResp>("auth/ple-verify-code", req);
public async Task<SignInSuccessResp> FinishPLEAccount(FinishPleAccountReq req) =>
await _apiClient.PostAsync<FinishPleAccountReq, SignInSuccessResp>("auth/finish-ple-account", req);
public async Task<SignInSuccessResp> LoginWithGoogle(LoginWithGoogleReq req) =>
await _apiClient.PostAsync<LoginWithGoogleReq, SignInSuccessResp>("auth/login-with-google", req);
public async Task<SignInSuccessResp> LoginWithApple(LoginWithAppleReq req) =>
await _apiClient.PostAsync<LoginWithAppleReq, SignInSuccessResp>("auth/login-with-apple", req);
public async Task<SignInSuccessResp> Register(RegisterReq req) =>
await _apiClient.PostAsync<RegisterReq, SignInSuccessResp>("auth/register", req);
public async Task<ResetPasswordResp> ResetPassword(ResetPasswordReq req) =>
await _apiClient.PostAsync<ResetPasswordReq, ResetPasswordResp>("auth/reset-password", req);
public async Task VerifyResetCode(VerifyPasswordResetReq req) =>
await _apiClient.PostAsync<VerifyPasswordResetReq, object>("auth/verify-reset-code", req);
}
}