mirror of
https://github.com/LemmyNet/lemmy
synced 2024-11-22 12:33:09 +00:00
Altering lemmy pict-rs-v2 forwarding.
This commit is contained in:
parent
9bbacd38f4
commit
c87a009b37
3 changed files with 29 additions and 25 deletions
|
@ -37,7 +37,7 @@ services:
|
|||
restart: always
|
||||
|
||||
pictrs:
|
||||
image: asonix/pictrs:amd64-v0.1.0-r9
|
||||
image: asonix/pictrs:v0.2.2-r0
|
||||
user: 991:991
|
||||
ports:
|
||||
- "127.0.0.1:8537:8080"
|
||||
|
|
|
@ -23,7 +23,7 @@ services:
|
|||
|
||||
pictrs:
|
||||
restart: always
|
||||
image: asonix/pictrs:v0.1.13-r0
|
||||
image: asonix/pictrs:v0.2.2-r0
|
||||
user: 991:991
|
||||
volumes:
|
||||
- ./volumes/pictrs_alpha:/mnt
|
||||
|
|
|
@ -18,10 +18,8 @@ pub fn config(cfg: &mut web::ServiceConfig, rate_limit: &RateLimit) {
|
|||
.wrap(rate_limit.image())
|
||||
.route(web::post().to(upload)),
|
||||
)
|
||||
// This has optional query params: /image/{filename}?format=jpg&thumbnail=256
|
||||
.service(web::resource("/pictrs/image/{filename}").route(web::get().to(full_res)))
|
||||
.service(
|
||||
web::resource("/pictrs/image/thumbnail{size}/{filename}").route(web::get().to(thumbnail)),
|
||||
)
|
||||
.service(web::resource("/pictrs/image/delete/{token}/{filename}").route(web::get().to(delete)));
|
||||
}
|
||||
|
||||
|
@ -37,6 +35,12 @@ pub struct Images {
|
|||
files: Option<Vec<Image>>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
pub struct PictrsParams {
|
||||
format: Option<String>,
|
||||
thumbnail: Option<String>,
|
||||
}
|
||||
|
||||
async fn upload(
|
||||
req: HttpRequest,
|
||||
body: web::Payload,
|
||||
|
@ -59,31 +63,31 @@ async fn upload(
|
|||
|
||||
async fn full_res(
|
||||
filename: web::Path<String>,
|
||||
web::Query(params): web::Query<PictrsParams>,
|
||||
req: HttpRequest,
|
||||
client: web::Data<Client>,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let url = format!(
|
||||
"{}/image/original/{}",
|
||||
Settings::get().pictrs_url,
|
||||
&filename.into_inner()
|
||||
);
|
||||
image(url, req, client).await
|
||||
}
|
||||
let name = &filename.into_inner();
|
||||
|
||||
async fn thumbnail(
|
||||
parts: web::Path<(u64, String)>,
|
||||
req: HttpRequest,
|
||||
client: web::Data<Client>,
|
||||
) -> Result<HttpResponse, Error> {
|
||||
let (size, file) = parts.into_inner();
|
||||
// If there are no query params, the URL is original
|
||||
let url = if params.format.is_none() && params.thumbnail.is_none() {
|
||||
format!("{}/image/original/{}", Settings::get().pictrs_url, name,)
|
||||
} else {
|
||||
// Use jpg as a default when none is given
|
||||
let format = params.format.unwrap_or("jpg".to_string());
|
||||
|
||||
let url = format!(
|
||||
"{}/image/process.{}?src={}&thumbnail={}",
|
||||
Settings::get().pictrs_url,
|
||||
"jpg", // this can be changed to png or webp
|
||||
&file,
|
||||
size,
|
||||
);
|
||||
let mut url = format!(
|
||||
"{}/image/process.{}?src={}",
|
||||
Settings::get().pictrs_url,
|
||||
format,
|
||||
name,
|
||||
);
|
||||
|
||||
if let Some(size) = params.thumbnail {
|
||||
url = format!("{}&thumbnail={}", url, size,);
|
||||
}
|
||||
url
|
||||
};
|
||||
|
||||
image(url, req, client).await
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue