Fladder/lib/models/credentials_model.dart
2024-09-20 10:01:13 +02:00

81 lines
2.1 KiB
Dart

import 'dart:convert';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:fladder/util/application_info.dart';
import 'package:xid/xid.dart';
class CredentialsModel {
final String token;
final String server;
final String serverName;
final String serverId;
final String deviceId;
CredentialsModel({
this.token = "",
this.server = "",
this.serverName = "",
this.serverId = "",
required this.deviceId,
});
factory CredentialsModel.createNewCredentials() {
return CredentialsModel(deviceId: Xid().toString());
}
Map<String, String> header(Ref ref) {
final application = ref.read(applicationInfoProvider);
final headers = {
'content-type': 'application/json',
'x-emby-token': token,
'x-emby-authorization':
'MediaBrowser Client="${application.name}", Device="${application.os}", DeviceId="$deviceId", Version="${application.version}"'
};
return headers;
}
CredentialsModel copyWith({
String? token,
String? server,
String? serverName,
String? serverId,
String? deviceId,
}) {
return CredentialsModel(
token: token ?? this.token,
server: server ?? this.server,
serverName: serverName ?? this.serverName,
serverId: serverId ?? this.serverId,
deviceId: deviceId ?? this.deviceId,
);
}
Map<String, dynamic> toMap() {
return {
'token': token,
'server': server,
'serverName': serverName,
'serverId': serverId,
'deviceId': deviceId,
};
}
factory CredentialsModel.fromMap(Map<String, dynamic> map) {
return CredentialsModel(
token: map['token'] ?? '',
server: map['server'] ?? '',
serverName: map['serverName'] ?? '',
serverId: map['serverId'] ?? '',
deviceId: map['deviceId'] ?? '',
);
}
String toJson() => json.encode(toMap());
factory CredentialsModel.fromJson(String source) => CredentialsModel.fromMap(json.decode(source));
@override
String toString() {
return 'CredentialsModel(token: $token, server: $server, serverName: $serverName, serverId: $serverId, header: $header)';
}
}