cosmetics
parent
0600fea278
commit
b215cf8e0d
|
@ -126,6 +126,45 @@ pub async fn get_raw(
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
#[get("/api/thumb/{hash}")]
|
||||
pub async fn get_thumbnail(
|
||||
state: web::Data<State>,
|
||||
hash: web::Path<String>,
|
||||
) -> Result<Either<NamedFile, HttpResponse>, Error> {
|
||||
#[cfg(feature = "previews")]
|
||||
if let Some(preview_store) = &state.preview_store {
|
||||
let hash = hash.into_inner();
|
||||
let address = Address::decode(&b58_decode(&hash).map_err(ErrorInternalServerError)?)
|
||||
.map_err(ErrorInternalServerError)?;
|
||||
if let Address::Hash(address_hash) = address {
|
||||
let preview_store = preview_store.clone();
|
||||
let preview_result = web::block(move || preview_store.get(address_hash)).await?;
|
||||
|
||||
if let Some(preview_path) = preview_result {
|
||||
let mut file = NamedFile::open(&preview_path)?.disable_content_disposition();
|
||||
if let Some(mime_type) = tree_magic_mini::from_filepath(&preview_path) {
|
||||
if let Ok(mime) = mime_type.parse() {
|
||||
file = file.set_content_type(mime);
|
||||
}
|
||||
}
|
||||
return Ok(Either::A(file));
|
||||
} else {
|
||||
return Ok(Either::B(
|
||||
HttpResponse::SeeOther()
|
||||
.header(http::header::LOCATION, format!("/api/raw/{hash}"))
|
||||
.finish(),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
return Err(ErrorBadRequest(
|
||||
"Address does not refer to a previewable object.",
|
||||
));
|
||||
}
|
||||
}
|
||||
Err(error::ErrorNotImplemented("Previews not enabled."))
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct QueryRequest {
|
||||
query: String,
|
||||
|
@ -458,41 +497,3 @@ pub async fn get_info(state: web::Data<State>) -> Result<HttpResponse, Error> {
|
|||
"version": crate::common::PKG_VERSION
|
||||
})))
|
||||
}
|
||||
|
||||
#[get("/api/thumb/{hash}")]
|
||||
pub async fn get_thumbnail(
|
||||
state: web::Data<State>,
|
||||
hash: web::Path<String>,
|
||||
) -> Result<Either<NamedFile, HttpResponse>, Error> {
|
||||
#[cfg(feature = "previews")]
|
||||
if let Some(preview_store) = &state.preview_store {
|
||||
let hash = hash.into_inner();
|
||||
let address = Address::decode(&b58_decode(&hash).map_err(ErrorInternalServerError)?)
|
||||
.map_err(ErrorInternalServerError)?;
|
||||
if let Address::Hash(address_hash) = address {
|
||||
let preview_store = preview_store.clone();
|
||||
let preview_result = web::block(move || preview_store.get(address_hash)).await?;
|
||||
|
||||
if let Some(preview_path) = preview_result {
|
||||
let mut file = NamedFile::open(&preview_path)?.disable_content_disposition();
|
||||
if let Some(mime_type) = tree_magic_mini::from_filepath(&preview_path) {
|
||||
if let Ok(mime) = mime_type.parse() {
|
||||
file = file.set_content_type(mime);
|
||||
}
|
||||
}
|
||||
return Ok(Either::A(file));
|
||||
} else {
|
||||
return Ok(Either::B(
|
||||
HttpResponse::SeeOther()
|
||||
.header(http::header::LOCATION, format!("/api/raw/{hash}"))
|
||||
.finish(),
|
||||
));
|
||||
}
|
||||
} else {
|
||||
return Err(ErrorBadRequest(
|
||||
"Address does not refer to a previewable object.",
|
||||
));
|
||||
}
|
||||
}
|
||||
Err(error::ErrorNotImplemented("Previews not enabled."))
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
import HashBadge from "../../display/HashBadge.svelte";
|
||||
import Spinner from "../../utils/Spinner.svelte";
|
||||
import UpLink from "../../display/UpLink.svelte";
|
||||
import { createEventDispatcher } from "svelte";
|
||||
|
||||
export let address: string;
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
import { formatRelative, parseISO } from "date-fns";
|
||||
import { Link } from "svelte-navigator";
|
||||
import { UpListing } from "upend";
|
||||
import type { IFile, ListingResult, VaultInfo } from "upend/types";
|
||||
import type { IFile, ListingResult } from "upend/types";
|
||||
import UpObject from "../components/display/UpObject.svelte";
|
||||
import UpObjectCard from "../components/display/UpObjectCard.svelte";
|
||||
import Spinner from "../components/utils/Spinner.svelte";
|
||||
|
|
Loading…
Reference in New Issue