cosmetics

feat/vaults
Tomáš Mládek 2022-02-04 12:06:45 +01:00
parent 0600fea278
commit b215cf8e0d
No known key found for this signature in database
GPG Key ID: ED21612889E75EC5
3 changed files with 40 additions and 40 deletions

View File

@ -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."))
}

View File

@ -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;

View File

@ -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";