mirror of
https://github.com/Dr-Blank/Vaani.git
synced 2025-12-06 11:09:28 +00:00
81 lines
3 KiB
Dart
81 lines
3 KiB
Dart
import 'package:shelfsdk/audiobookshelf_api.dart';
|
|
|
|
extension LibraryItemConversion on LibraryItem {
|
|
LibraryItemExpanded get asExpanded => LibraryItemExpanded.fromJson(toJson());
|
|
|
|
LibraryItemMinified get asMinified => LibraryItemMinified.fromJson(toJson());
|
|
}
|
|
|
|
extension MediaConversion on Media {
|
|
Book get asBook => Book.fromJson(toJson());
|
|
BookExpanded get asBookExpanded => BookExpanded.fromJson(toJson());
|
|
BookMinified get asBookMinified => BookMinified.fromJson(toJson());
|
|
|
|
Podcast get asPodcast => Podcast.fromJson(toJson());
|
|
PodcastExpanded get asPodcastExpanded => PodcastExpanded.fromJson(toJson());
|
|
PodcastMinified get asPodcastMinified => PodcastMinified.fromJson(toJson());
|
|
}
|
|
|
|
extension MediaMetadataConversion on MediaMetadata {
|
|
BookMetadata get asBookMetadata => BookMetadata.fromJson(toJson());
|
|
BookMetadataExpanded get asBookMetadataExpanded =>
|
|
BookMetadataExpanded.fromJson(toJson());
|
|
BookMetadataMinified get asBookMetadataMinified =>
|
|
BookMetadataMinified.fromJson(toJson());
|
|
|
|
BookMetadataSeriesFilter get asBookMetadataSeriesFilter =>
|
|
BookMetadataSeriesFilter.fromJson(toJson());
|
|
BookMetadataMinifiedSeriesFilter get asBookMetadataMinifiedSeriesFilter =>
|
|
BookMetadataMinifiedSeriesFilter.fromJson(toJson());
|
|
|
|
PodcastMetadata get asPodcastMetadata => PodcastMetadata.fromJson(toJson());
|
|
PodcastMetadataExpanded get asPodcastMetadataExpanded =>
|
|
PodcastMetadataExpanded.fromJson(toJson());
|
|
}
|
|
|
|
extension AuthorConversion on Author {
|
|
AuthorExpanded get asExpanded => AuthorExpanded.fromJson(toJson());
|
|
AuthorMinified get asMinified => AuthorMinified.fromJson(toJson());
|
|
}
|
|
|
|
extension ShelfConversion on Shelf {
|
|
LibraryItemShelf get asLibraryItemShelf =>
|
|
LibraryItemShelf.fromJson(toJson());
|
|
SeriesShelf get asSeriesShelf => SeriesShelf.fromJson(toJson());
|
|
AuthorShelf get asAuthorShelf => AuthorShelf.fromJson(toJson());
|
|
}
|
|
|
|
extension UserConversion on User {
|
|
UserWithSessionAndMostRecentProgress
|
|
get asUserWithSessionAndMostRecentProgress =>
|
|
UserWithSessionAndMostRecentProgress.fromJson(toJson());
|
|
User get asUser => User.fromJson(toJson());
|
|
}
|
|
|
|
extension ContentUrl on LibraryFile {
|
|
Uri url(String baseUrl, String itemId, String token) {
|
|
// /api/items/{itemId}/file/{ino}?{token}
|
|
// return Uri.parse('$baseUrl/api/items/$itemId/file/$ino?token=$token');
|
|
var baseUri = Uri.parse(baseUrl);
|
|
return Uri(
|
|
scheme: baseUri.scheme,
|
|
host: baseUri.host,
|
|
path: '/api/items/$itemId/file/$ino',
|
|
queryParameters: {'token': token},
|
|
);
|
|
}
|
|
|
|
Uri downloadUrl(String baseUrl, String itemId, String token) {
|
|
// /api/items/{itemId}/file/{ino}/download?{token}
|
|
// return Uri.parse(
|
|
// '$baseUrl/api/items/$itemId/file/$ino/download?token=$token',
|
|
// );
|
|
var baseUri = Uri.parse(baseUrl);
|
|
return Uri(
|
|
scheme: baseUri.scheme,
|
|
host: baseUri.host,
|
|
path: '/api/items/$itemId/file/$ino/download',
|
|
queryParameters: {'token': token},
|
|
);
|
|
}
|
|
}
|