[fractal] API, util: use endpoint in get_prev_batch_from



commit 6b03d362d67e3de43bde241c09035f9094698ad3
Author: Alejandro Domínguez <adomu net-c com>
Date:   Tue Mar 10 09:33:27 2020 +0100

    API, util: use endpoint in get_prev_batch_from

 fractal-matrix-api/src/backend/media.rs |  2 +-
 fractal-matrix-api/src/backend/room.rs  |  2 +-
 fractal-matrix-api/src/util.rs          | 24 ++++++++++++++----------
 3 files changed, 16 insertions(+), 12 deletions(-)
---
diff --git a/fractal-matrix-api/src/backend/media.rs b/fractal-matrix-api/src/backend/media.rs
index 68ce863e..6a75477c 100644
--- a/fractal-matrix-api/src/backend/media.rs
+++ b/fractal-matrix-api/src/backend/media.rs
@@ -52,7 +52,7 @@ pub fn get_media_list_async(
             // FIXME: This should never be an empty token
             .or_else(|| {
                 if let Some(ref id) = first_media_id {
-                    get_prev_batch_from(&baseu, &access_token, &room_id, id).ok()
+                    get_prev_batch_from(baseu.clone(), access_token.clone(), &room_id, id).ok()
                 } else {
                     None
                 }
diff --git a/fractal-matrix-api/src/backend/room.rs b/fractal-matrix-api/src/backend/room.rs
index 22c025a6..301cec06 100644
--- a/fractal-matrix-api/src/backend/room.rs
+++ b/fractal-matrix-api/src/backend/room.rs
@@ -243,7 +243,7 @@ pub fn get_room_messages_from_msg(
     let itx = bk.internal_tx.clone();
 
     thread::spawn(move || {
-        if let Ok(from) = get_prev_batch_from(&baseu, &tk, &room_id, &msg.id) {
+        if let Ok(from) = get_prev_batch_from(baseu.clone(), tk.clone(), &room_id, &msg.id) {
             if let Some(t) = itx {
                 t.send(BKCommand::GetRoomMessages(baseu, tk, room_id, from))
                     .expect_log("Connection closed");
diff --git a/fractal-matrix-api/src/util.rs b/fractal-matrix-api/src/util.rs
index fde3d66e..57f3280d 100644
--- a/fractal-matrix-api/src/util.rs
+++ b/fractal-matrix-api/src/util.rs
@@ -1,6 +1,5 @@
 use lazy_static::lazy_static;
 use log::error;
-use serde_json::json;
 
 use serde_json::Value as JsonValue;
 
@@ -21,6 +20,9 @@ use std::thread;
 
 use crate::client::Client;
 use crate::error::Error;
+use crate::r0::context::get_context::request as get_context;
+use crate::r0::context::get_context::Parameters as GetContextParameters;
+use crate::r0::context::get_context::Response as GetContextResponse;
 use crate::r0::profile::get_profile::request as get_profile;
 use crate::r0::profile::get_profile::Response as GetProfileResponse;
 use crate::r0::AccessToken;
@@ -196,18 +198,20 @@ pub fn parse_m_direct(events: &Vec<JsonValue>) -> HashMap<UserId, Vec<RoomId>> {
 }
 
 pub fn get_prev_batch_from(
-    baseu: &Url,
-    tk: &AccessToken,
+    base: Url,
+    access_token: AccessToken,
     room_id: &RoomId,
-    evid: &str,
+    event_id: &str,
 ) -> Result<String, Error> {
-    let params = &[("access_token", tk.to_string()), ("limit", 0.to_string())];
-
-    let path = format!("rooms/{}/context/{}", room_id, evid);
-    let url = build_url(baseu, &format!("/_matrix/client/r0/{}", path), params)?;
+    let params = GetContextParameters {
+        access_token,
+        limit: 0,
+        filter: Default::default(),
+    };
 
-    let r = json_q("get", url, &json!(null))?;
-    let prev_batch = r["start"].to_string().trim_matches('"').to_string();
+    let request = get_context(base, &params, room_id, event_id)?;
+    let response: GetContextResponse = HTTP_CLIENT.get_client()?.execute(request)?.json()?;
+    let prev_batch = response.start.unwrap_or_default();
 
     Ok(prev_batch)
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]