import 'package:social_app/core/api/i_api_client.dart'; import 'models/signup_request.dart'; import 'models/login_request.dart'; import 'models/auth_response.dart'; class AuthApi { final IApiClient _client; static const _prefix = '/api/v1/auth'; AuthApi(this._client); Future createVerification( SignupStartRequest request, ) async { final response = await _client.post( '$_prefix/verifications', data: request.toJson(), ); return VerificationCreateResponse.fromJson(response.data); } Future verifyVerification(SignupVerifyRequest request) async { final response = await _client.post( '$_prefix/verify', data: {'type': 'signup', ...request.toJson()}, ); return AuthResponse.fromJson(response.data); } Future resendVerification(SignupResendRequest request) async { await _client.post( '$_prefix/resend', data: {'type': 'signup', ...request.toJson()}, ); } Future createSession(LoginRequest request) async { final response = await _client.post( '$_prefix/sessions', data: request.toJson(), ); return AuthResponse.fromJson(response.data); } Future refreshSession(RefreshRequest request) async { final response = await _client.post( '$_prefix/sessions/refresh', data: request.toJson(), ); return AuthResponse.fromJson(response.data); } Future deleteSession(LogoutRequest request) async { await _client.delete('$_prefix/sessions', data: request.toJson()); } Future requestPasswordReset(String email) async { await _client.post( '$_prefix/resend', data: {'type': 'recovery', 'email': email}, ); } Future confirmPasswordReset({ required String email, required String token, required String newPassword, }) async { await _client.post( '$_prefix/verify', data: { 'type': 'recovery', 'email': email, 'token': token, 'new_password': newPassword, }, ); } }