cargo66/lib/data/data_sources/remote/user_remote_data_source.dart

79 lines
2.0 KiB
Dart
Raw Normal View History

2024-07-23 06:37:42 +00:00
import 'dart:convert';
import 'package:http/http.dart' as http;
import '../../../core/core.dart';
import '../../../domain/domain.dart';
import '../../data.dart';
abstract class UserRemoteDataSource {
2024-08-07 13:56:12 +00:00
Future<String> signIn(SignInParams params);
Future<User> getUser(String token);
2024-09-10 05:56:37 +00:00
Future<void> registerFBToken(String token, String fbToken);
2024-07-23 06:37:42 +00:00
}
class UserRemoteDataSourceImpl implements UserRemoteDataSource {
final http.Client client;
UserRemoteDataSourceImpl({required this.client});
@override
2024-08-07 13:56:12 +00:00
Future<String> signIn(SignInParams params) async {
final response = await client.post(
Uri.parse('$baseUrl/Authentication/Authenticate'),
headers: {
'Content-Type': 'application/json',
'accept': '*/*',
},
body: json.encode(
{
2024-08-29 11:51:26 +00:00
'UserName': params.username.trim(),
2024-08-07 13:56:12 +00:00
'Password': params.password,
},
),
);
2024-08-06 14:22:41 +00:00
2024-08-07 13:56:12 +00:00
if (response.statusCode == 200) {
return response.body;
} else if (response.statusCode == 400 || response.statusCode == 401) {
throw CredentialFailure();
} else {
2024-07-23 06:37:42 +00:00
throw ServerException();
2024-08-06 14:22:41 +00:00
}
2024-07-23 06:37:42 +00:00
}
@override
2024-08-07 13:56:12 +00:00
Future<User> getUser(String token) async {
final response = await client.get(
Uri.parse('$baseUrl/Client/GetClient'),
headers: {
'Content-Type': 'application/json',
'accept': '*/*',
'Authorization': 'Bearer $token',
},
);
if (response.statusCode == 200) {
final user = UserModel.fromJson(json.decode(response.body));
return user;
2024-07-23 06:37:42 +00:00
} else {
throw ServerException();
}
}
2024-09-10 05:56:37 +00:00
@override
Future<void> registerFBToken(String token, String fbToken) async {
final response = await client.post(
Uri.parse('$baseUrl/Client/FirebaseToken?token=$fbToken'),
headers: {
'accept': '*/*',
'Content-Type': 'application/json',
'Authorization': 'Bearer $token',
},
);
2024-09-10 09:40:23 +00:00
/* if (response.statusCode != 200) {
2024-09-10 05:56:37 +00:00
throw ServerException();
2024-09-10 09:40:23 +00:00
} */
2024-09-10 05:56:37 +00:00
}
2024-07-23 06:37:42 +00:00
}