austinried 3408a3988e music source and client for subsonic
test fixture setup for navidrome
2025-11-02 10:35:22 +09:00

41 lines
830 B
Dart

import 'package:xml/xml.dart';
enum Status {
ok('ok'),
failed('failed');
const Status(this.value);
final String value;
}
class SubsonicResponse {
SubsonicResponse(XmlDocument xml) {
this.xml = xml.getElement('subsonic-response')!;
status = Status.values.byName(this.xml.getAttribute('status')!);
}
late Status status;
late XmlElement xml;
}
class SubsonicException implements Exception {
SubsonicException(this.xml) {
try {
final error = xml.getElement('error')!;
code = int.parse(error.getAttribute('code')!);
message = error.getAttribute('message')!;
} catch (err) {
code = -1;
message = 'Unknown error.';
}
}
final XmlElement xml;
late int code;
late String message;
@override
String toString() => 'SubsonicException [$code]: $message';
}