loris/lib/business_logic/instance/instance.dart

62 lines
1.5 KiB
Dart
Raw Normal View History

2022-08-29 21:16:13 +00:00
import 'dart:convert';
import 'package:http/http.dart';
import 'package:loris/global.dart' as global;
class InstanceInformation {
final InstanceConfiguration configuration;
InstanceInformation(this.configuration);
static InstanceInformation fromJson(Map<String, dynamic> json) {
return InstanceInformation(
InstanceConfiguration.fromJson(
json["configuration"],
),
);
}
}
class InstanceConfiguration {
final StatusConfiguration statusconfig;
InstanceConfiguration(this.statusconfig);
static InstanceConfiguration fromJson(Map<String, dynamic> json) {
return InstanceConfiguration(
StatusConfiguration.fromJson(json["statuses"]),
);
}
}
class StatusConfiguration {
final int maxChars;
2022-09-25 16:21:26 +00:00
final int maxMediaAttachments;
2022-08-29 21:16:13 +00:00
2022-09-25 16:21:26 +00:00
StatusConfiguration(this.maxChars, this.maxMediaAttachments);
2022-08-29 21:16:13 +00:00
static StatusConfiguration fromJson(Map<String, dynamic> json) {
return StatusConfiguration(
json["max_characters"],
2022-09-25 16:21:26 +00:00
json["max_media_attachments"],
2022-08-29 21:16:13 +00:00
);
}
}
Future<Map<int, InstanceInformation?>> instanceInformationForIdentity(
String id,
) async {
final Uri url = Uri(
scheme: "https",
host: global.settings!.identities[id]!.instanceUrl,
path: "/api/v1/instance",
);
final response = await get(
url,
headers: global.defaultHeaders,
);
if (response.statusCode != 200) {
return {response.statusCode: null};
}
return {
response.statusCode: InstanceInformation.fromJson(jsonDecode(response.body))
};
}