2023-01-28 21:24:49 +09:00
import ' dart:io ' ;
2022-12-11 21:40:35 +08:00
import ' package:flutter_hbb/models/peer_model.dart ' ;
2023-01-28 21:24:49 +09:00
import ' ../../models/platform_model.dart ' ;
2023-01-06 19:26:19 +09: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 19:26:19 +09: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 19:26:19 +09: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 19:26:19 +09:00
2023-01-28 21:24:49 +09: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 19:26:19 +09:00
class LoginRequest {
String ? username ;
String ? password ;
String ? id ;
String ? uuid ;
2023-06-20 07:43:13 +08:00
bool ? trustThisDevice ;
2023-01-06 19:26:19 +09:00
String ? type ;
String ? verificationCode ;
2023-01-28 21:24:49 +09:00
Map < String , dynamic > deviceInfo = DeviceInfo . toJson ( ) ;
2023-01-06 19:26:19 +09:00
LoginRequest (
{ this . username ,
this . password ,
this . id ,
this . uuid ,
2023-06-20 07:43:13 +08:00
this . trustThisDevice ,
2023-01-06 19:26:19 +09:00
this . type ,
2023-01-28 21:24:49 +09:00
this . verificationCode } ) ;
2023-01-06 19:26:19 +09:00
Map < String , dynamic > toJson ( ) {
final Map < String , dynamic > data = < String , dynamic > { } ;
2023-06-22 15:09:47 +08:00
if ( username ! = null ) data [ ' username ' ] = username ;
if ( password ! = null ) data [ ' password ' ] = password ;
if ( id ! = null ) data [ ' id ' ] = id ;
if ( uuid ! = null ) data [ ' uuid ' ] = uuid ;
if ( trustThisDevice ! = null ) data [ ' trustThisDevice ' ] = trustThisDevice ;
if ( type ! = null ) data [ ' type ' ] = type ;
if ( verificationCode ! = null ) {
data [ ' verificationCode ' ] = verificationCode ;
}
2023-01-28 21:24:49 +09:00
data [ ' deviceInfo ' ] = deviceInfo ;
2023-01-06 19:26:19 +09: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 ' ] ;
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 " ;
}
}