Fix library service

This commit is contained in:
2022-12-16 22:55:07 +01:00
parent a5827721cd
commit 7b7dc33070
5 changed files with 40 additions and 10 deletions

View File

@@ -46,13 +46,16 @@ pub async fn get_sources() -> Result<types::Source, Box<dyn std::error::Error +
pub async fn get_book( pub async fn get_book(
book_id: u32, book_id: u32,
) -> Result<types::Book, Box<dyn std::error::Error + Send + Sync>> { ) -> Result<types::BookWithRemote, Box<dyn std::error::Error + Send + Sync>> {
_make_request(format!("/api/v1/books/{book_id}").as_str(), vec![]).await _make_request(format!("/api/v1/books/{book_id}").as_str(), vec![]).await
} }
pub async fn get_remote_book( pub async fn get_remote_book(
source_id: u32, source_id: u32,
book_id: u32, remote_id: u32,
) -> Result<types::Book, Box<dyn std::error::Error + Send + Sync>> { ) -> Result<types::BookWithRemote, Box<dyn std::error::Error + Send + Sync>> {
_make_request(format!("/api/v1/books/remote/{source_id}/{book_id}").as_ref(), vec![]).await match _make_request::<types::Book>(format!("/api/v1/books/remote/{source_id}/{remote_id}").as_ref(), vec![]).await {
Ok(v) => Ok(types::BookWithRemote::from_book(v, remote_id)),
Err(err) => Err(err),
}
} }

View File

@@ -17,6 +17,16 @@ pub struct BookAuthor {
#[derive(Deserialize, Debug, Clone)] #[derive(Deserialize, Debug, Clone)]
pub struct Book { pub struct Book {
pub id: u32,
pub title: String,
pub lang: String,
pub file_type: String,
pub uploaded: String,
pub authors: Vec<BookAuthor>,
}
#[derive(Deserialize, Debug, Clone)]
pub struct BookWithRemote {
pub id: u32, pub id: u32,
pub remote_id: u32, pub remote_id: u32,
pub title: String, pub title: String,
@@ -25,3 +35,17 @@ pub struct Book {
pub uploaded: String, pub uploaded: String,
pub authors: Vec<BookAuthor>, pub authors: Vec<BookAuthor>,
} }
impl BookWithRemote {
pub fn from_book(book: Book, remote_id: u32) -> Self {
Self {
id: book.id,
remote_id,
title: book.title,
lang: book.lang,
file_type: book.file_type,
uploaded: book.uploaded,
authors: book.authors
}
}
}

View File

@@ -10,7 +10,7 @@ use self::types::{DownloadResult, Data, SpooledTempAsyncRead};
use self::utils::response_to_tempfile; use self::utils::response_to_tempfile;
use self::zip::{unzip, zip}; use self::zip::{unzip, zip};
use super::book_library::types::Book; use super::book_library::types::BookWithRemote;
use super::covert::convert_file; use super::covert::convert_file;
use super::{book_library::get_remote_book, filename_getter::get_filename_by_book}; use super::{book_library::get_remote_book, filename_getter::get_filename_by_book};
@@ -75,7 +75,7 @@ pub async fn download<'a>(
} }
pub async fn download_chain<'a>( pub async fn download_chain<'a>(
book: &'a Book, book: &'a BookWithRemote,
file_type: &'a str, file_type: &'a str,
source_config: &'a config::SourceConfig, source_config: &'a config::SourceConfig,
converting: bool converting: bool
@@ -150,7 +150,7 @@ pub async fn download_chain<'a>(
} }
pub async fn start_download_futures( pub async fn start_download_futures(
book: &Book, book: &BookWithRemote,
file_type: &str, file_type: &str,
) -> Option<DownloadResult> { ) -> Option<DownloadResult> {
let mut futures = FuturesUnordered::new(); let mut futures = FuturesUnordered::new();

View File

@@ -1,6 +1,6 @@
use translit::{gost779b_ru, CharsMapping, Transliterator}; use translit::{gost779b_ru, CharsMapping, Transliterator};
use super::book_library::types::{BookAuthor, Book}; use super::book_library::types::{BookAuthor, BookWithRemote};
pub fn get_author_short_name(author: BookAuthor) -> String { pub fn get_author_short_name(author: BookAuthor) -> String {
let mut parts: Vec<String> = vec![]; let mut parts: Vec<String> = vec![];
@@ -22,7 +22,7 @@ pub fn get_author_short_name(author: BookAuthor) -> String {
parts.join(" ") parts.join(" ")
} }
pub fn get_filename_by_book(book: &Book, file_type: &str, force_zip: bool) -> String { pub fn get_filename_by_book(book: &BookWithRemote, file_type: &str, force_zip: bool) -> String {
let book_id = book.remote_id; let book_id = book.remote_id;
let mut filename_parts: Vec<String> = vec![]; let mut filename_parts: Vec<String> = vec![];

View File

@@ -25,7 +25,10 @@ pub async fn download(
let download_result = match book_download(source_id, remote_id, file_type.as_str()).await { let download_result = match book_download(source_id, remote_id, file_type.as_str()).await {
Ok(v) => v, Ok(v) => v,
Err(_) => return Err((StatusCode::NO_CONTENT, "Can't download!".to_string())), Err(err) => {
log::debug!("{:?}", err);
return Err((StatusCode::NO_CONTENT, "Can't download!".to_string()))
},
}; };
let (data, filename) = match download_result { let (data, filename) = match download_result {