mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-19 18:43:32 +00:00
43 lines
1.5 KiB
Dart
43 lines
1.5 KiB
Dart
import 'package:result_monad/result_monad.dart';
|
|
|
|
import '../../models/exec_error.dart';
|
|
import '../../models/friendica_version.dart';
|
|
import '../../models/instance_info.dart';
|
|
|
|
const _defaultMaxImageBytes = 819200;
|
|
const _defaultMaxCharacters = 4000;
|
|
|
|
Result<InstanceInfo, ExecError> fromInstanceV1Json(Map<String, dynamic> json) {
|
|
return runCatching(() {
|
|
final maxStatusCharacters = json['max_toot_chars'] ?? _defaultMaxCharacters;
|
|
final versionString = json['version'];
|
|
return Result.ok(InstanceInfo(
|
|
friendicaVersion: FriendicaVersion.fromMastodonVersionString(
|
|
versionString,
|
|
),
|
|
maxStatusCharacters: maxStatusCharacters,
|
|
versionString: versionString,
|
|
maxImageBytes: _defaultMaxImageBytes,
|
|
));
|
|
}).execErrorCast();
|
|
}
|
|
|
|
Result<InstanceInfo, ExecError> fromInstanceV2Json(Map<String, dynamic> json) {
|
|
return runCatching(() {
|
|
final maxStatusCharacters = json['configuration']?['statuses']
|
|
?['max_characters'] ??
|
|
_defaultMaxCharacters;
|
|
final maxImageBytes = json['configuration']?['media_attachments']
|
|
?['image_size_limit'] ??
|
|
_defaultMaxImageBytes;
|
|
final versionString =
|
|
json['friendica']?['version'] ?? 'Not a friendica server';
|
|
final version = FriendicaVersion.fromVersionString(versionString);
|
|
return Result.ok(InstanceInfo(
|
|
friendicaVersion: version,
|
|
maxStatusCharacters: maxStatusCharacters,
|
|
versionString: versionString,
|
|
maxImageBytes: maxImageBytes,
|
|
));
|
|
}).execErrorCast();
|
|
}
|