diff options
author | Vidhu Kant Sharma <vidhukant@vidhukant.com> | 2023-09-11 01:00:14 +0530 |
---|---|---|
committer | Vidhu Kant Sharma <vidhukant@vidhukant.com> | 2023-09-11 01:00:14 +0530 |
commit | 7651d5200767a339089dd4021bf77a86b6adcf80 (patch) | |
tree | 3fef13a7f0140b22716bfbc9a7c6e842782b853c /lib/models/login.dart |
first commitv0.0.1
Diffstat (limited to 'lib/models/login.dart')
-rw-r--r-- | lib/models/login.dart | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/models/login.dart b/lib/models/login.dart new file mode 100644 index 0000000..6412921 --- /dev/null +++ b/lib/models/login.dart @@ -0,0 +1,66 @@ +import "package:http/http.dart" as http; +import "dart:convert"; + +import "package:openbills/models/user.dart"; + +enum LoginMethod { email, username } + +extension LoginMethodString on LoginMethod { + String get value { + switch(this) { + case LoginMethod.username: + return "username"; + case LoginMethod.email: + return "email"; + } + } +} + +class LoginRes { + final User user; + final String authToken; + final String refreshToken; + + LoginRes({ + required this.user, + required this.authToken, + required this.refreshToken, + }); + + factory LoginRes.fromJson(Map<String, dynamic> json) { + return LoginRes( + user: User.fromJson(json["data"]), + authToken: json["auth_token"], + refreshToken: json["refresh_token"], + ); + } +} + +Future<LoginRes> userSignIn(String accountName, method, password) async { + final res = await http.post( + Uri.parse("https://openbills.vidhukant.com/api/auth/signin"), + headers: <String, String> { + "Content-Type": "application/json; charset=UTF-8", + }, + body: jsonEncode(<String, String> { + "AccountName": accountName, + "Method": method, + "Password": password, + }) + ); + + final json = jsonDecode(res.body); + + if (res.statusCode != 200) { + switch(res.statusCode) { + case 404: + throw "This user does not exist"; + case 500: + throw "Internal Server Error"; + default: + throw json["error"]; + } + } + + return LoginRes.fromJson(json); +} |