[fractal] API, util.rs: move functions that are only used by one mod



commit e6c8978303aac8578c16aff869dbeba60664e1d2
Author: Alejandro Domínguez <adomu net-c com>
Date:   Thu Aug 29 04:07:58 2019 +0200

    API, util.rs: move functions that are only used by one mod

 fractal-matrix-api/src/backend/media.rs | 55 ++++++++++++++++++++++++-
 fractal-matrix-api/src/backend/room.rs  | 20 +++++++--
 fractal-matrix-api/src/backend/user.rs  | 13 +++++-
 fractal-matrix-api/src/util.rs          | 73 ---------------------------------
 4 files changed, 83 insertions(+), 78 deletions(-)
---
diff --git a/fractal-matrix-api/src/backend/media.rs b/fractal-matrix-api/src/backend/media.rs
index e03413ec..b8f8f5a9 100644
--- a/fractal-matrix-api/src/backend/media.rs
+++ b/fractal-matrix-api/src/backend/media.rs
@@ -2,18 +2,23 @@ use crate::backend::types::BKResponse;
 use crate::backend::types::Backend;
 use crate::error::Error;
 use crate::globals;
+use serde_json::json;
 use std::sync::mpsc::Sender;
 use std::thread;
+use url::Url;
 
 use crate::util;
 use crate::util::cache_dir_path;
+use crate::util::client_url;
 use crate::util::download_file;
-use crate::util::get_room_media_list;
+use crate::util::get_prev_batch_from;
+use crate::util::json_q;
 use crate::util::resolve_media_url;
 use crate::util::semaphore;
 use crate::util::thumb;
 use crate::util::ResultExpectLog;
 
+use crate::r0::filter::RoomEventFilter;
 use crate::types::Message;
 
 pub fn get_thumb_async(bk: &Backend, media: String, tx: Sender<String>) -> Result<(), Error> {
@@ -138,3 +143,51 @@ pub fn get_file_async(url: String, tx: Sender<String>) -> Result<(), Error> {
 
     Ok(())
 }
+
+fn get_room_media_list(
+    baseu: &Url,
+    tk: &str,
+    roomid: &str,
+    limit: i32,
+    first_media_id: Option<String>,
+    prev_batch: &Option<String>,
+) -> Result<(Vec<Message>, String), Error> {
+    let mut params = vec![
+        ("dir", String::from("b")),
+        ("limit", format!("{}", limit)),
+        ("access_token", String::from(tk)),
+        (
+            "filter",
+            serde_json::to_string(&RoomEventFilter {
+                contains_url: true,
+                not_types: vec!["m.sticker"],
+                ..Default::default()
+            })
+            .expect("Failed to serialize room media list request filter"),
+        ),
+    ];
+
+    match prev_batch {
+        Some(ref pb) => params.push(("from", pb.clone())),
+        None => {
+            if let Some(id) = first_media_id {
+                params.push(("from", get_prev_batch_from(baseu, tk, &roomid, &id)?))
+            }
+        }
+    };
+
+    let path = format!("rooms/{}/messages", roomid);
+    let url = client_url(baseu, &path, &params)?;
+
+    let r = json_q("get", &url, &json!(null))?;
+    let array = r["chunk"].as_array();
+    let prev_batch = r["end"].to_string().trim_matches('"').to_string();
+    if array.is_none() || array.unwrap().is_empty() {
+        return Ok((vec![], prev_batch));
+    }
+
+    let evs = array.unwrap().iter().rev();
+    let media_list = Message::from_json_events_iter(roomid, evs);
+
+    Ok((media_list, prev_batch))
+}
diff --git a/fractal-matrix-api/src/backend/room.rs b/fractal-matrix-api/src/backend/room.rs
index 1cf2d3e5..cae35146 100644
--- a/fractal-matrix-api/src/backend/room.rs
+++ b/fractal-matrix-api/src/backend/room.rs
@@ -1,6 +1,7 @@
 use log::error;
 use serde_json::json;
 
+use reqwest::header::CONTENT_TYPE;
 use std::fs::File;
 use std::io::prelude::*;
 use std::sync::mpsc::Sender;
@@ -13,12 +14,12 @@ use crate::error::Error;
 use crate::globals;
 use std::thread;
 
-use crate::util;
 use crate::util::cache_dir_path;
+use crate::util::get_prev_batch_from;
 use crate::util::json_q;
-use crate::util::put_media;
 use crate::util::thumb;
 use crate::util::ResultExpectLog;
+use crate::util::HTTP_CLIENT;
 use crate::util::{client_url, media_url};
 
 use crate::backend::types::BKCommand;
@@ -174,7 +175,7 @@ pub fn get_room_messages_from_msg(bk: &Backend, roomid: String, msg: Message) ->
     let tx = bk.internal_tx.clone();
 
     thread::spawn(move || {
-        if let Ok(from) = util::get_prev_batch_from(&baseu, &tk, &roomid, &msg.id) {
+        if let Ok(from) = get_prev_batch_from(&baseu, &tk, &roomid, &msg.id) {
             if let Some(t) = tx {
                 t.send(BKCommand::GetRoomMessages(roomid, from))
                     .expect_log("Connection closed");
@@ -755,3 +756,16 @@ pub fn invite(bk: &Backend, roomid: &str, userid: &str) -> Result<(), Error> {
 
     Ok(())
 }
+
+fn put_media(url: &str, file: Vec<u8>) -> Result<JsonValue, Error> {
+    let (mime, _) = gio::content_type_guess(None, &file);
+
+    HTTP_CLIENT
+        .get_client()?
+        .post(url)
+        .body(file)
+        .header(CONTENT_TYPE, mime.to_string())
+        .send()?
+        .json()
+        .or(Err(Error::BackendError))
+}
diff --git a/fractal-matrix-api/src/backend/user.rs b/fractal-matrix-api/src/backend/user.rs
index 715043a6..e0b5a196 100644
--- a/fractal-matrix-api/src/backend/user.rs
+++ b/fractal-matrix-api/src/backend/user.rs
@@ -3,16 +3,18 @@ use std::fs;
 use crate::backend::types::BKResponse;
 use crate::backend::types::Backend;
 use crate::error::Error;
+use crate::util::cache_dir_path;
 use crate::util::encode_uid;
 use crate::util::get_user_avatar;
-use crate::util::get_user_avatar_img;
 use crate::util::semaphore;
+use crate::util::thumb;
 use crate::util::ResultExpectLog;
 use crate::util::HTTP_CLIENT;
 use reqwest::header::HeaderValue;
 use std::sync::mpsc::Sender;
 use std::sync::{Arc, Mutex};
 use std::thread;
+use url::Url;
 
 use crate::identity::r0::association::msisdn::submit_token::request as submit_phone_token_req;
 use crate::identity::r0::association::msisdn::submit_token::Body as SubmitPhoneTokenBody;
@@ -624,3 +626,12 @@ pub fn search(bk: &Backend, search_term: String) {
         }
     });
 }
+
+fn get_user_avatar_img(baseu: &Url, userid: &str, avatar: &str) -> Result<String, Error> {
+    if avatar.is_empty() {
+        return Ok(String::new());
+    }
+
+    let dest = cache_dir_path("", &userid)?;
+    thumb(baseu, &avatar, Some(&dest))
+}
diff --git a/fractal-matrix-api/src/util.rs b/fractal-matrix-api/src/util.rs
index efc13edb..2e027353 100644
--- a/fractal-matrix-api/src/util.rs
+++ b/fractal-matrix-api/src/util.rs
@@ -20,13 +20,10 @@ use std::thread;
 
 use crate::client::Client;
 use crate::error::Error;
-use crate::r0::filter::RoomEventFilter;
 use crate::r0::profile::get_profile::request as get_profile;
 use crate::r0::profile::get_profile::Response as GetProfileResponse;
-use crate::types::Message;
 
 use reqwest::header::CONTENT_LENGTH;
-use reqwest::header::CONTENT_TYPE;
 
 use crate::globals;
 
@@ -186,67 +183,6 @@ pub fn get_prev_batch_from(
     Ok(prev_batch)
 }
 
-pub fn get_room_media_list(
-    baseu: &Url,
-    tk: &str,
-    roomid: &str,
-    limit: i32,
-    first_media_id: Option<String>,
-    prev_batch: &Option<String>,
-) -> Result<(Vec<Message>, String), Error> {
-    let mut params = vec![
-        ("dir", String::from("b")),
-        ("limit", format!("{}", limit)),
-        ("access_token", String::from(tk)),
-        (
-            "filter",
-            serde_json::to_string(&RoomEventFilter {
-                contains_url: true,
-                not_types: vec!["m.sticker"],
-                ..Default::default()
-            })
-            .expect("Failed to serialize room media list request filter"),
-        ),
-    ];
-
-    match prev_batch {
-        Some(ref pb) => params.push(("from", pb.clone())),
-        None => {
-            if let Some(id) = first_media_id {
-                params.push(("from", get_prev_batch_from(baseu, tk, &roomid, &id)?))
-            }
-        }
-    };
-
-    let path = format!("rooms/{}/messages", roomid);
-    let url = client_url(baseu, &path, &params)?;
-
-    let r = json_q("get", &url, &json!(null))?;
-    let array = r["chunk"].as_array();
-    let prev_batch = r["end"].to_string().trim_matches('"').to_string();
-    if array.is_none() || array.unwrap().is_empty() {
-        return Ok((vec![], prev_batch));
-    }
-
-    let evs = array.unwrap().iter().rev();
-    let media_list = Message::from_json_events_iter(roomid, evs);
-
-    Ok((media_list, prev_batch))
-}
-
-pub fn put_media(url: &str, file: Vec<u8>) -> Result<JsonValue, Error> {
-    let (mime, _) = gio::content_type_guess(None, &file);
-
-    HTTP_CLIENT
-        .get_client()?
-        .post(url)
-        .body(file)
-        .header(CONTENT_TYPE, mime.to_string())
-        .send()?
-        .json()
-        .or(Err(Error::BackendError))
-}
-
 pub fn resolve_media_url(base: &Url, url: &str, thumb: bool, w: i32, h: i32) -> Result<Url, Error> {
     let caps = globals::MATRIX_RE
         .captures(url)
@@ -452,15 +388,6 @@ pub fn cache_dir_path(dir: Option<&str>, name: &str) -> Result<String, Error> {
         .ok_or(Error::CacheError)
 }
 
-pub fn get_user_avatar_img(baseu: &Url, userid: &str, avatar: &str) -> Result<String, Error> {
-    if avatar.is_empty() {
-        return Ok(String::new());
-    }
-
-    let dest = cache_dir_path(None, &userid)?;
-    thumb(baseu, &avatar, Some(&dest))
-}
-
 pub fn encode_uid(userid: &str) -> String {
     utf8_percent_encode(userid, USERINFO_ENCODE_SET).collect::<String>()
 }


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