108 lines
2.7 KiB
Dart
108 lines
2.7 KiB
Dart
|
/*
|
||
|
* Famedly Matrix SDK
|
||
|
* Copyright (C) 2019, 2020 Famedly GmbH
|
||
|
*
|
||
|
* This program is free software: you can redistribute it and/or modify
|
||
|
* it under the terms of the GNU Affero General Public License as
|
||
|
* published by the Free Software Foundation, either version 3 of the
|
||
|
* License, or (at your option) any later version.
|
||
|
*
|
||
|
* This program is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
* GNU Affero General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU Affero General Public License
|
||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||
|
*/
|
||
|
|
||
|
class WhoIsInfo {
|
||
|
String userId;
|
||
|
Map<String, DeviceInfo> devices;
|
||
|
|
||
|
WhoIsInfo.fromJson(Map<String, dynamic> json) {
|
||
|
userId = json['user_id'];
|
||
|
devices = json['devices'] != null
|
||
|
? (json['devices'] as Map)
|
||
|
.map((k, v) => MapEntry(k, DeviceInfo.fromJson(v)))
|
||
|
: null;
|
||
|
}
|
||
|
|
||
|
Map<String, dynamic> toJson() {
|
||
|
final data = <String, dynamic>{};
|
||
|
data['user_id'] = userId;
|
||
|
if (devices != null) {
|
||
|
data['devices'] = devices.map((k, v) => MapEntry(k, v.toJson()));
|
||
|
}
|
||
|
return data;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class DeviceInfo {
|
||
|
List<Sessions> sessions;
|
||
|
|
||
|
DeviceInfo.fromJson(Map<String, dynamic> json) {
|
||
|
if (json['sessions'] != null) {
|
||
|
sessions = <Sessions>[];
|
||
|
json['sessions'].forEach((v) {
|
||
|
sessions.add(Sessions.fromJson(v));
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Map<String, dynamic> toJson() {
|
||
|
final data = <String, dynamic>{};
|
||
|
if (sessions != null) {
|
||
|
data['sessions'] = sessions.map((v) => v.toJson()).toList();
|
||
|
}
|
||
|
return data;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class Sessions {
|
||
|
List<Connections> connections;
|
||
|
|
||
|
Sessions.fromJson(Map<String, dynamic> json) {
|
||
|
if (json['connections'] != null) {
|
||
|
connections = <Connections>[];
|
||
|
json['connections'].forEach((v) {
|
||
|
connections.add(Connections.fromJson(v));
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Map<String, dynamic> toJson() {
|
||
|
final data = <String, dynamic>{};
|
||
|
if (connections != null) {
|
||
|
data['connections'] = connections.map((v) => v.toJson()).toList();
|
||
|
}
|
||
|
return data;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class Connections {
|
||
|
String ip;
|
||
|
int lastSeen;
|
||
|
String userAgent;
|
||
|
|
||
|
Connections.fromJson(Map<String, dynamic> json) {
|
||
|
ip = json['ip'];
|
||
|
lastSeen = json['last_seen'];
|
||
|
userAgent = json['user_agent'];
|
||
|
}
|
||
|
|
||
|
Map<String, dynamic> toJson() {
|
||
|
final data = <String, dynamic>{};
|
||
|
if (ip != null) {
|
||
|
data['ip'] = ip;
|
||
|
}
|
||
|
if (lastSeen != null) {
|
||
|
data['last_seen'] = lastSeen;
|
||
|
}
|
||
|
if (userAgent != null) {
|
||
|
data['user_agent'] = userAgent;
|
||
|
}
|
||
|
return data;
|
||
|
}
|
||
|
}
|