mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-12 23:45:18 +00:00

* feat: add caching support with track metadata * feat(settings): add cache music toggle * fix(mobile): cache dir not open-able * feat(local folder): add cache export/clear actions and size of the folder * chore: ios deps upgrades * chore: upgrade lint flutter version * chore: lint secrets causing error * cd: invalid value for env var
72 lines
1.5 KiB
Dart
72 lines
1.5 KiB
Dart
class ContentRangeHeader {
|
|
final int start;
|
|
final int end;
|
|
final int total;
|
|
|
|
ContentRangeHeader(this.start, this.end, this.total);
|
|
|
|
factory ContentRangeHeader.parse(String value) {
|
|
if (value.isEmpty) {
|
|
throw FormatException('Invalid Content-Range header: $value');
|
|
}
|
|
|
|
final parts = value.split(' ');
|
|
if (parts.length != 2) {
|
|
throw FormatException('Invalid Content-Range header: $value');
|
|
}
|
|
|
|
final rangeParts = parts[1].split('/');
|
|
if (rangeParts.length != 2) {
|
|
throw FormatException('Invalid Content-Range header: $value');
|
|
}
|
|
|
|
final range = rangeParts[0].split('-');
|
|
if (range.length != 2) {
|
|
throw FormatException('Invalid Content-Range header: $value');
|
|
}
|
|
|
|
return ContentRangeHeader(
|
|
int.parse(range[0]),
|
|
int.parse(range[1]),
|
|
int.parse(rangeParts[1]),
|
|
);
|
|
}
|
|
|
|
@override
|
|
String toString() {
|
|
return 'bytes $start-$end/$total';
|
|
}
|
|
}
|
|
|
|
class RangeHeader {
|
|
final int start;
|
|
final int? end;
|
|
|
|
RangeHeader(this.start, this.end);
|
|
|
|
factory RangeHeader.parse(String value) {
|
|
if (value.isEmpty) {
|
|
return RangeHeader(0, null);
|
|
}
|
|
|
|
final parts = value.split('=');
|
|
if (parts.length != 2) {
|
|
throw FormatException('Invalid Range header: $value');
|
|
}
|
|
|
|
final ranges = parts[1].split('-');
|
|
|
|
return RangeHeader(
|
|
int.parse(ranges[0]),
|
|
ranges.elementAtOrNull(1) != null && ranges[1].isNotEmpty
|
|
? int.parse(ranges[1])
|
|
: null,
|
|
);
|
|
}
|
|
|
|
@override
|
|
String toString() {
|
|
return 'bytes=$start-${end ?? ""}';
|
|
}
|
|
}
|