2023-01-28 20:24:49 +08:00
|
|
|
import 'dart:io';
|
|
|
|
|
2022-12-11 21:40:35 +08:00
|
|
|
import 'package:flutter_hbb/models/peer_model.dart';
|
|
|
|
|
2023-01-28 20:24:49 +08:00
|
|
|
import '../../models/platform_model.dart';
|
|
|
|
|
2023-01-06 18:26:19 +08:00
|
|
|
class HttpType {
|
|
|
|
static const kAuthReqTypeAccount = "account";
|
|
|
|
static const kAuthReqTypeMobile = "mobile";
|
|
|
|
static const kAuthReqTypeSMSCode = "sms_code";
|
|
|
|
static const kAuthReqTypeEmailCode = "email_code";
|
|
|
|
|
|
|
|
static const kAuthResTypeToken = "access_token";
|
|
|
|
static const kAuthResTypeEmailCheck = "email_check";
|
|
|
|
}
|
|
|
|
|
2023-06-22 00:43:17 +08:00
|
|
|
enum UserStatus { kDisabled, kNormal, kUnverified }
|
|
|
|
|
2023-06-21 23:58:13 +08:00
|
|
|
// to-do: The UserPayload does not contain all the fields of the user.
|
|
|
|
// Is all the fields of the user needed?
|
2022-12-11 21:40:35 +08:00
|
|
|
class UserPayload {
|
|
|
|
String name = '';
|
|
|
|
String email = '';
|
|
|
|
String note = '';
|
2023-06-22 00:43:17 +08:00
|
|
|
UserStatus status;
|
2023-01-06 18:26:19 +08:00
|
|
|
bool isAdmin = false;
|
2022-12-11 21:40:35 +08:00
|
|
|
|
|
|
|
UserPayload.fromJson(Map<String, dynamic> json)
|
2023-06-22 00:43:17 +08:00
|
|
|
: name = json['name'] ?? '',
|
2022-12-11 21:40:35 +08:00
|
|
|
email = json['email'] ?? '',
|
|
|
|
note = json['note'] ?? '',
|
2023-06-22 00:43:17 +08:00
|
|
|
status = json['status'] == 0
|
|
|
|
? UserStatus.kDisabled
|
|
|
|
: json['status'] == -1
|
|
|
|
? UserStatus.kUnverified
|
|
|
|
: UserStatus.kNormal,
|
2023-01-06 18:26:19 +08:00
|
|
|
isAdmin = json['is_admin'] == true;
|
2023-06-21 23:58:13 +08:00
|
|
|
|
|
|
|
Map<String, dynamic> toJson() {
|
|
|
|
final Map<String, dynamic> map = {
|
|
|
|
'name': name,
|
2023-06-22 00:43:17 +08:00
|
|
|
'status': status == UserStatus.kDisabled
|
|
|
|
? 0
|
|
|
|
: status == UserStatus.kUnverified
|
|
|
|
? -1
|
|
|
|
: 1,
|
2023-06-21 23:58:13 +08:00
|
|
|
};
|
|
|
|
return map;
|
|
|
|
}
|
2022-12-11 21:40:35 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
class PeerPayload {
|
|
|
|
String id = '';
|
|
|
|
String info = '';
|
|
|
|
int? status;
|
|
|
|
String user = '';
|
|
|
|
String user_name = '';
|
|
|
|
String note = '';
|
|
|
|
|
|
|
|
PeerPayload.fromJson(Map<String, dynamic> json)
|
|
|
|
: id = json['id'] ?? '',
|
|
|
|
info = json['info'] ?? '',
|
|
|
|
status = json['status'],
|
|
|
|
user = json['user'] ?? '',
|
|
|
|
user_name = json['user_name'] ?? '',
|
|
|
|
note = json['note'] ?? '';
|
|
|
|
|
|
|
|
static Peer toPeer(PeerPayload p) {
|
2023-06-21 09:30:32 +08:00
|
|
|
return Peer.fromJson({"id": p.id, "username": p.user_name});
|
2022-12-11 21:40:35 +08:00
|
|
|
}
|
|
|
|
}
|
2023-01-06 18:26:19 +08:00
|
|
|
|
2023-01-28 20:24:49 +08:00
|
|
|
class DeviceInfo {
|
|
|
|
static Map<String, dynamic> toJson() {
|
|
|
|
final Map<String, dynamic> data = <String, dynamic>{};
|
|
|
|
data['os'] = Platform.operatingSystem;
|
|
|
|
data['type'] = "client";
|
|
|
|
data['name'] = bind.mainGetHostname();
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-01-06 18:26:19 +08:00
|
|
|
class LoginRequest {
|
|
|
|
String? username;
|
|
|
|
String? password;
|
|
|
|
String? id;
|
|
|
|
String? uuid;
|
2023-06-20 07:43:13 +08:00
|
|
|
bool? trustThisDevice;
|
2023-01-06 18:26:19 +08:00
|
|
|
String? type;
|
|
|
|
String? verificationCode;
|
2023-01-28 20:24:49 +08:00
|
|
|
Map<String, dynamic> deviceInfo = DeviceInfo.toJson();
|
2023-01-06 18:26:19 +08:00
|
|
|
|
|
|
|
LoginRequest(
|
|
|
|
{this.username,
|
|
|
|
this.password,
|
|
|
|
this.id,
|
|
|
|
this.uuid,
|
2023-06-20 07:43:13 +08:00
|
|
|
this.trustThisDevice,
|
2023-01-06 18:26:19 +08:00
|
|
|
this.type,
|
2023-01-28 20:24:49 +08:00
|
|
|
this.verificationCode});
|
2023-01-06 18:26:19 +08:00
|
|
|
|
|
|
|
Map<String, dynamic> toJson() {
|
|
|
|
final Map<String, dynamic> data = <String, dynamic>{};
|
|
|
|
data['username'] = username ?? '';
|
|
|
|
data['password'] = password ?? '';
|
|
|
|
data['id'] = id ?? '';
|
|
|
|
data['uuid'] = uuid ?? '';
|
2023-06-20 07:43:13 +08:00
|
|
|
data['trustThisDevice'] = trustThisDevice ?? '';
|
2023-01-06 18:26:19 +08:00
|
|
|
data['type'] = type ?? '';
|
|
|
|
data['verificationCode'] = verificationCode ?? '';
|
2023-01-28 20:24:49 +08:00
|
|
|
data['deviceInfo'] = deviceInfo;
|
2023-01-06 18:26:19 +08:00
|
|
|
return data;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class LoginResponse {
|
|
|
|
String? access_token;
|
|
|
|
String? type;
|
|
|
|
UserPayload? user;
|
|
|
|
|
|
|
|
LoginResponse({this.access_token, this.type, this.user});
|
|
|
|
|
|
|
|
LoginResponse.fromJson(Map<String, dynamic> json) {
|
|
|
|
access_token = json['access_token'];
|
|
|
|
type = json['type'];
|
2023-06-22 00:43:17 +08:00
|
|
|
print('REMOVE ME ================== $json');
|
2023-01-06 18:26:19 +08:00
|
|
|
user = json['user'] != null ? UserPayload.fromJson(json['user']) : null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
class RequestException implements Exception {
|
|
|
|
int statusCode;
|
|
|
|
String cause;
|
|
|
|
RequestException(this.statusCode, this.cause);
|
|
|
|
|
|
|
|
@override
|
|
|
|
String toString() {
|
|
|
|
return "RequestException, statusCode: $statusCode, error: $cause";
|
|
|
|
}
|
|
|
|
}
|