]> Untitled Git - lemmy.git/blobdiff - crates/routes/src/images.rs
Make functions work with both connection and pool (#3420)
[lemmy.git] / crates / routes / src / images.rs
index 78b5a85454e8eb4a733760cc2a28cf7f62d1d6ba..b79a38ffdc86d82ec673419dfec0fc1cf0dc9902 100644 (file)
@@ -11,15 +11,18 @@ use actix_web::{
   HttpResponse,
 };
 use futures::stream::{Stream, StreamExt};
-use lemmy_api_common::utils::{blocking, get_local_user_view_from_jwt};
-use lemmy_db_schema::source::site::Site;
-use lemmy_utils::{claims::Claims, rate_limit::RateLimit, REQWEST_TIMEOUT};
-use lemmy_websocket::LemmyContext;
+use lemmy_api_common::{context::LemmyContext, utils::local_user_view_from_jwt};
+use lemmy_db_schema::source::local_site::LocalSite;
+use lemmy_utils::{claims::Claims, rate_limit::RateLimitCell, REQWEST_TIMEOUT};
 use reqwest::Body;
 use reqwest_middleware::{ClientWithMiddleware, RequestBuilder};
 use serde::{Deserialize, Serialize};
 
-pub fn config(cfg: &mut web::ServiceConfig, client: ClientWithMiddleware, rate_limit: &RateLimit) {
+pub fn config(
+  cfg: &mut web::ServiceConfig,
+  client: ClientWithMiddleware,
+  rate_limit: &RateLimitCell,
+) {
   cfg
     .app_data(web::Data::new(client))
     .service(
@@ -126,20 +129,19 @@ async fn full_res(
   context: web::Data<LemmyContext>,
 ) -> Result<HttpResponse, Error> {
   // block access to images if instance is private and unauthorized, public
-  let site = blocking(context.pool(), Site::read_local_site).await?;
-  // The site might not be set up yet
-  if let Ok(site) = site {
-    if site.private_instance {
-      let jwt = req
-        .cookie("jwt")
-        .expect("No auth header for picture access");
-      if get_local_user_view_from_jwt(jwt.value(), context.pool(), context.secret())
-        .await
-        .is_err()
-      {
-        return Ok(HttpResponse::Unauthorized().finish());
-      };
-    }
+  let local_site = LocalSite::read(&mut context.pool())
+    .await
+    .map_err(error::ErrorBadRequest)?;
+  if local_site.private_instance {
+    let jwt = req
+      .cookie("jwt")
+      .expect("No auth header for picture access");
+    if local_user_view_from_jwt(jwt.value(), &context)
+      .await
+      .is_err()
+    {
+      return Ok(HttpResponse::Unauthorized().finish());
+    };
   }
   let name = &filename.into_inner();
 
@@ -156,7 +158,7 @@ async fn full_res(
     let mut url = format!("{}image/process.{}?src={}", pictrs_config.url, format, name,);
 
     if let Some(size) = params.thumbnail {
-      url = format!("{}&thumbnail={}", url, size,);
+      url = format!("{url}&thumbnail={size}",);
     }
     url
   };