import 'dart:io'; import 'package:flutter_hbb/models/peer_model.dart'; import '../../models/platform_model.dart'; 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"; } enum UserStatus { kDisabled, kNormal, kUnverified } // to-do: The UserPayload does not contain all the fields of the user. // Is all the fields of the user needed? class UserPayload { String name = ''; String email = ''; String note = ''; UserStatus status; bool isAdmin = false; UserPayload.fromJson(Map json) : name = json['name'] ?? '', email = json['email'] ?? '', note = json['note'] ?? '', status = json['status'] == 0 ? UserStatus.kDisabled : json['status'] == -1 ? UserStatus.kUnverified : UserStatus.kNormal, isAdmin = json['is_admin'] == true; Map toJson() { final Map map = { 'name': name, 'status': status == UserStatus.kDisabled ? 0 : status == UserStatus.kUnverified ? -1 : 1, }; return map; } } class PeerPayload { String id = ''; String info = ''; int? status; String user = ''; String user_name = ''; String note = ''; PeerPayload.fromJson(Map 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) { return Peer.fromJson({"id": p.id, "username": p.user_name}); } } class DeviceInfo { static Map toJson() { final Map data = {}; data['os'] = Platform.operatingSystem; data['type'] = "client"; data['name'] = bind.mainGetHostname(); return data; } } class LoginRequest { String? username; String? password; String? id; String? uuid; bool? trustThisDevice; String? type; String? verificationCode; Map deviceInfo = DeviceInfo.toJson(); LoginRequest( {this.username, this.password, this.id, this.uuid, this.trustThisDevice, this.type, this.verificationCode}); Map toJson() { final Map data = {}; data['username'] = username ?? ''; data['password'] = password ?? ''; data['id'] = id ?? ''; data['uuid'] = uuid ?? ''; data['trustThisDevice'] = trustThisDevice ?? ''; data['type'] = type ?? ''; data['verificationCode'] = verificationCode ?? ''; data['deviceInfo'] = deviceInfo; return data; } } class LoginResponse { String? access_token; String? type; UserPayload? user; LoginResponse({this.access_token, this.type, this.user}); LoginResponse.fromJson(Map json) { access_token = json['access_token']; type = json['type']; print('REMOVE ME ================== $json'); 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"; } }