about summary refs log tree commit diff
path: root/src/micropub
diff options
context:
space:
mode:
authorVika <vika@fireburn.ru>2024-08-26 15:22:29 +0300
committerVika <vika@fireburn.ru>2024-08-26 15:23:22 +0300
commit31a0bdad439a4575c1686f690e9e72bd44dde472 (patch)
tree6b8c9132c19445d997bd75964604b069ffbd573f /src/micropub
parentc79e950ca22c7a957c11e510700664327b042115 (diff)
downloadkittybox-31a0bdad439a4575c1686f690e9e72bd44dde472.tar.zst
Add HTTP fetcher cache
It just does its thing in the background, potentially speeding up
things. Maybe I could also use the underlying in-memory cache
implementation (Moka) to speed up my database. I heard crates.io got
some good results from that.
Diffstat (limited to 'src/micropub')
-rw-r--r--src/micropub/mod.rs35
1 files changed, 28 insertions, 7 deletions
diff --git a/src/micropub/mod.rs b/src/micropub/mod.rs
index 08150d2..8f95085 100644
--- a/src/micropub/mod.rs
+++ b/src/micropub/mod.rs
@@ -82,7 +82,7 @@ fn populate_reply_context(
 async fn background_processing<D: 'static + Storage>(
     db: D,
     mf2: serde_json::Value,
-    http: reqwest::Client,
+    http: reqwest_middleware::ClientWithMiddleware,
 ) -> () {
     // TODO: Post-processing the post (aka second write pass)
     // - [x] Download rich reply contexts
@@ -232,7 +232,7 @@ pub(crate) async fn _post<D: 'static + Storage>(
     uid: String,
     mf2: serde_json::Value,
     db: D,
-    http: reqwest::Client,
+    http: reqwest_middleware::ClientWithMiddleware,
     jobset: Arc<Mutex<JoinSet<()>>>,
 ) -> Result<Response, MicropubError> {
     // Here, we have the following guarantees:
@@ -501,7 +501,7 @@ async fn dispatch_body(
 #[tracing::instrument(skip(db, http))]
 pub(crate) async fn post<D: Storage + 'static, A: AuthBackend>(
     State(db): State<D>,
-    State(http): State<reqwest::Client>,
+    State(http): State<reqwest_middleware::ClientWithMiddleware>,
     State(jobset): State<Arc<Mutex<JoinSet<()>>>>,
     TypedHeader(content_type): TypedHeader<ContentType>,
     user: User<A>,
@@ -655,7 +655,7 @@ pub fn router<A, S, St: Send + Sync + Clone + 'static>() -> axum::routing::Metho
 where
     S: Storage + FromRef<St> + 'static,
     A: AuthBackend + FromRef<St>,
-    reqwest::Client: FromRef<St>,
+    reqwest_middleware::ClientWithMiddleware: FromRef<St>,
     Arc<Mutex<JoinSet<()>>>: FromRef<St>
 {
     axum::routing::get(query::<S, A>)
@@ -758,7 +758,14 @@ mod tests {
         };
         let (uid, mf2) = super::normalize_mf2(post, &user);
 
-        let err = super::_post(&user, uid, mf2, db.clone(), reqwest::Client::new(), Arc::new(Mutex::new(tokio::task::JoinSet::new())))
+        let err = super::_post(
+            &user, uid, mf2, db.clone(),
+            reqwest_middleware::ClientWithMiddleware::new(
+                reqwest::Client::new(),
+                Box::default()
+            ),
+            Arc::new(Mutex::new(tokio::task::JoinSet::new()))
+        )
             .await
             .unwrap_err();
 
@@ -788,7 +795,14 @@ mod tests {
         };
         let (uid, mf2) = super::normalize_mf2(post, &user);
 
-        let err = super::_post(&user, uid, mf2, db.clone(), reqwest::Client::new(), Arc::new(Mutex::new(tokio::task::JoinSet::new())))
+        let err = super::_post(
+            &user, uid, mf2, db.clone(),
+            reqwest_middleware::ClientWithMiddleware::new(
+                reqwest::Client::new(),
+                Box::default()
+            ),
+            Arc::new(Mutex::new(tokio::task::JoinSet::new()))
+        )
             .await
             .unwrap_err();
 
@@ -816,7 +830,14 @@ mod tests {
         };
         let (uid, mf2) = super::normalize_mf2(post, &user);
 
-        let res = super::_post(&user, uid, mf2, db.clone(), reqwest::Client::new(), Arc::new(Mutex::new(tokio::task::JoinSet::new())))
+        let res = super::_post(
+            &user, uid, mf2, db.clone(),
+            reqwest_middleware::ClientWithMiddleware::new(
+                reqwest::Client::new(),
+                Box::default()
+            ),
+            Arc::new(Mutex::new(tokio::task::JoinSet::new()))
+        )
             .await
             .unwrap();