From ef128c6bb7a0ac545eceec4850ca9a8f39ba3437 Mon Sep 17 00:00:00 2001 From: Vinod J M Date: Tue, 1 Nov 2022 11:38:10 +0530 Subject: [PATCH] v0.10-frontend3 --- backend/api/src/lib.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/backend/api/src/lib.rs b/backend/api/src/lib.rs index 2175ab6..ea0a291 100644 --- a/backend/api/src/lib.rs +++ b/backend/api/src/lib.rs @@ -1,7 +1,7 @@ use axum::{ - http::{HeaderValue, Method}, + http::{HeaderValue, Method, StatusCode}, response::IntoResponse, - routing::{get,post}, + routing::{get,post,get_service}, Json, Router, extract::{Extension, Path}, }; @@ -12,7 +12,10 @@ use serde::{Deserialize, Serialize}; use std::collections::HashMap; use std::net::{IpAddr, Ipv6Addr, SocketAddr}; use std::str::FromStr; +use std::io; use tower::ServiceBuilder; +use tower_http::services::ServeDir; + use tower_http::cors::{Any,CorsLayer}; use tower_http::trace::TraceLayer; use booksman_orm::{ @@ -117,6 +120,10 @@ impl Books { } } +async fn handle_error(_err: io::Error) -> impl IntoResponse { + (StatusCode::INTERNAL_SERVER_ERROR, "Something went wrong...") +} + // Setup the command line interface with clap. #[derive(Parser, Debug)] #[clap(name = "server", about = "A server for our wasm project!")] @@ -163,6 +170,7 @@ pub async fn main() { .route("/api/delete/:id", post(delete_book)) .route("/api/list", post(list_book)) .route("/api/create", post(create_book)) + .nest("/images", get_service(ServeDir::new("../images")).handle_error(handle_error)) .merge(SpaRouter::new("/assets", opt.static_dir)) .layer(ServiceBuilder::new().layer(TraceLayer::new_for_http())) .layer(Extension(conn)) @@ -258,7 +266,11 @@ async fn list_book( let mut res: Vec = Vec::with_capacity(5); for (id,group) in data_grouped.into_iter() { - let bookui = BookUI{ + let mut cover = group.clone().into_iter().clone().map(|u| u.cover).next(); + if !cover.is_none() { +cover = Some(format!("http://localhost:8081/images/{}",cover.unwrap())); + } + let bookui = BookUI{ id, title: group.clone().into_iter().map( |u| u.title).next().unwrap(), open_library_key: group.clone().into_iter().map( |u| u.open_library_key).next(), @@ -267,7 +279,7 @@ first_publish_year: group.clone().into_iter().clone().map(|u| u.first_publish_ye median_page_count: group.clone().into_iter().clone().map(|u| u.median_page_count).next(), goodread_id: group.clone().into_iter().clone().map(|u| u.goodread_id).next(), description: group.clone().into_iter().clone().map(|u| u.description).next(), -cover: group.clone().into_iter().clone().map(|u| u.cover).next(), +cover: cover.clone(), location: group.clone().into_iter().clone().map(|u| u.location).next(), time_added: group.clone().into_iter().clone().map(|u| u.time_added).next(), rating: group.clone().into_iter().clone().map(|u| u.rating).next(),