TIF_E41211115_Genso_quiz_app/lib/data/services/auth_service.dart

63 lines
1.8 KiB
Dart

import 'package:dio/dio.dart';
import 'package:get/get.dart';
import 'package:quiz_app/core/endpoint/api_endpoint.dart';
import 'package:quiz_app/data/models/base/base_model.dart';
import 'package:quiz_app/data/models/login/login_request_model.dart';
import 'package:quiz_app/data/models/login/login_response_model.dart';
import 'package:quiz_app/data/models/register/register_request.dart';
import 'package:quiz_app/data/providers/dio_client.dart';
class AuthService extends GetxService {
late final Dio _dio;
@override
void onInit() {
_dio = Get.find<ApiClient>().dio;
super.onInit();
}
Future<bool> register(RegisterRequestModel request) async {
var data = await _dio.post(
APIEndpoint.register,
data: request.toJson(),
);
if (data.statusCode == 200) {
return true;
} else {
throw Exception("Registration failed");
}
}
Future<LoginResponseModel> loginWithEmail(LoginRequestModel request) async {
final data = request.toJson();
final response = await _dio.post(APIEndpoint.login, data: data);
if (response.statusCode == 200) {
final baseResponse = BaseResponseModel<LoginResponseModel>.fromJson(
response.data,
(json) => LoginResponseModel.fromJson(json),
);
return baseResponse.data!;
} else {
throw Exception("Login failed");
}
}
Future<LoginResponseModel> loginWithGoogle(String idToken) async {
final response = await _dio.post(
APIEndpoint.loginGoogle,
data: {"token_id": idToken},
);
if (response.statusCode == 200) {
final baseResponse = BaseResponseModel<LoginResponseModel>.fromJson(
response.data,
(json) => LoginResponseModel.fromJson(json),
);
return baseResponse.data!;
} else {
throw Exception("Google login failed");
}
}
}