[fractal] fractal-matrix-api: Don't pass by value unnecessarily
- From: Alexandre Franke <afranke src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal] fractal-matrix-api: Don't pass by value unnecessarily
- Date: Sun, 23 Dec 2018 11:07:04 +0000 (UTC)
commit 2ab29cfe69422887a1cafe82b68d6fbed26814c0
Author: Zeeshan Ali <zeenix collabora co uk>
Date: Wed Dec 12 23:05:44 2018 +0100
fractal-matrix-api: Don't pass by value unnecessarily
This patch fixes a big bunch of 'unnecessary pass by value' errors from clippy:
```
error: this argument is passed by value, but not consumed in the function body
--> fractal-matrix-api/src/util.rs:340:9
|
340 | tk: String,
| ^^^^^^
|
= note: `-D clippy::needless-pass-by-value` implied by `-D warnings`
= help: for further information visit
https://rust-lang-nursery.github.io/rust-clippy/master/index.html#needless_pass_by_value
help: consider changing the type to
|
340 | tk: &str,
| ^^^^
help: change `tk.clone()` to
|
357 | tk.to_string(),
| ^^^^^^^^^^^^^^
```
Related: #370
fractal-matrix-api/src/backend/directory.rs | 2 +-
fractal-matrix-api/src/backend/media.rs | 9 +--
fractal-matrix-api/src/backend/mod.rs | 52 ++++++++---------
fractal-matrix-api/src/backend/register.rs | 31 +++++-----
fractal-matrix-api/src/backend/room.rs | 87 +++++++++++++----------------
fractal-matrix-api/src/backend/stickers.rs | 36 ++++++------
fractal-matrix-api/src/backend/sync.rs | 4 +-
fractal-matrix-api/src/backend/types.rs | 2 +-
fractal-matrix-api/src/backend/user.rs | 58 +++++++++----------
fractal-matrix-api/src/model/message.rs | 6 +-
fractal-matrix-api/src/util.rs | 73 +++++++++++-------------
11 files changed, 171 insertions(+), 189 deletions(-)
---
diff --git a/fractal-matrix-api/src/backend/directory.rs b/fractal-matrix-api/src/backend/directory.rs
index 78cbaaf..4b6eda2 100644
--- a/fractal-matrix-api/src/backend/directory.rs
+++ b/fractal-matrix-api/src/backend/directory.rs
@@ -76,7 +76,7 @@ pub fn room_search(
params.push(("server", hs));
}
- let url = bk.url("publicRooms", params)?;
+ let url = bk.url("publicRooms", ¶ms)?;
let base = bk.get_base_url()?;
let mut attrs = json!({ "limit": globals::ROOM_DIRECTORY_LIMIT });
diff --git a/fractal-matrix-api/src/backend/media.rs b/fractal-matrix-api/src/backend/media.rs
index fb9bd5a..ffb1ebe 100644
--- a/fractal-matrix-api/src/backend/media.rs
+++ b/fractal-matrix-api/src/backend/media.rs
@@ -51,21 +51,22 @@ pub fn get_media_async(bk: &Backend, media: String, tx: Sender<String>) -> Resul
pub fn get_media_list_async(
bk: &Backend,
- roomid: String,
+ roomid: &str,
first_media_id: Option<String>,
prev_batch: Option<String>,
tx: Sender<(Vec<Message>, String)>,
) -> Result<(), Error> {
let baseu = bk.get_base_url()?;
let tk = bk.data.lock().unwrap().access_token.clone();
+ let room = String::from(roomid);
semaphore(bk.limit_threads.clone(), move || match get_room_media_list(
&baseu,
- tk,
- roomid.clone(),
+ &tk,
+ &room,
globals::PAGE_LIMIT,
first_media_id,
- prev_batch,
+ &prev_batch,
) {
Ok(media_list) => {
tx.send(media_list).unwrap();
diff --git a/fractal-matrix-api/src/backend/mod.rs b/fractal-matrix-api/src/backend/mod.rs
index 56f349f..d498c45 100644
--- a/fractal-matrix-api/src/backend/mod.rs
+++ b/fractal-matrix-api/src/backend/mod.rs
@@ -58,14 +58,14 @@ impl Backend {
Ok(url)
}
- fn url(&self, path: &str, params: Vec<(&str, String)>) -> Result<Url, Error> {
+ fn url(&self, path: &str, params: &[(&str, String)]) -> Result<Url, Error> {
let base = self.get_base_url()?;
let tk = self.data.lock().unwrap().access_token.clone();
let mut params2 = params.to_vec();
params2.push(("access_token", tk.clone()));
- client_url(&base, path, params2)
+ client_url(&base, path, ¶ms2)
}
pub fn run(mut self) -> Sender<BKCommand> {
@@ -88,7 +88,7 @@ impl Backend {
match cmd {
// Register module
Ok(BKCommand::Login(user, passwd, server)) => {
- let r = register::login(self, user, passwd, server);
+ let r = register::login(self, &user, &passwd, &server);
bkerror!(r, tx, BKResponse::LoginError);
}
Ok(BKCommand::Logout) => {
@@ -96,15 +96,15 @@ impl Backend {
bkerror!(r, tx, BKResponse::LogoutError);
}
Ok(BKCommand::Register(user, passwd, server)) => {
- let r = register::register(self, user, passwd, server);
+ let r = register::register(self, &user, &passwd, &server);
bkerror!(r, tx, BKResponse::LoginError);
}
Ok(BKCommand::Guest(server)) => {
- let r = register::guest(self, server);
+ let r = register::guest(self, &server);
bkerror!(r, tx, BKResponse::GuestLoginError);
}
Ok(BKCommand::SetToken(token, uid, server)) => {
- let r = register::set_token(self, token, uid, server);
+ let r = register::set_token(self, token, uid, &server);
bkerror!(r, tx, BKResponse::LoginError);
}
@@ -122,31 +122,31 @@ impl Backend {
bkerror!(r, tx, BKResponse::GetThreePIDError);
}
Ok(BKCommand::GetTokenEmail(identity, email, client_secret)) => {
- let r = user::get_email_token(self, identity, email, client_secret);
+ let r = user::get_email_token(self, &identity, &email, client_secret);
bkerror!(r, tx, BKResponse::GetTokenEmailError);
}
Ok(BKCommand::GetTokenPhone(identity, phone, client_secret)) => {
- let r = user::get_phone_token(self, identity, phone, client_secret);
+ let r = user::get_phone_token(self, &identity, &phone, client_secret);
bkerror!(r, tx, BKResponse::GetTokenEmailError);
}
Ok(BKCommand::SubmitPhoneToken(identity, client_secret, sid, token)) => {
- let r = user::submit_phone_token(self, identity, client_secret, sid, token);
+ let r = user::submit_phone_token(self, &identity, client_secret, sid, token);
bkerror!(r, tx, BKResponse::SubmitPhoneTokenError);
}
Ok(BKCommand::AddThreePID(identity, client_secret, sid)) => {
- let r = user::add_threepid(self, identity, client_secret, sid);
+ let r = user::add_threepid(self, &identity, &client_secret, sid);
bkerror!(r, tx, BKResponse::AddThreePIDError);
}
Ok(BKCommand::DeleteThreePID(medium, address)) => {
- let r = user::delete_three_pid(self, medium, address);
+ let r = user::delete_three_pid(self, &medium, &address);
bkerror!(r, tx, BKResponse::DeleteThreePIDError);
}
Ok(BKCommand::ChangePassword(username, old_password, new_password)) => {
- let r = user::change_password(self, username, old_password, new_password);
+ let r = user::change_password(self, &username, &old_password, &new_password);
bkerror!(r, tx, BKResponse::ChangePasswordError);
}
Ok(BKCommand::AccountDestruction(username, password, flag)) => {
- let r = user::account_destruction(self, username, password, flag);
+ let r = user::account_destruction(self, &username, &password, flag);
bkerror!(r, tx, BKResponse::AccountDestructionError);
}
Ok(BKCommand::GetAvatar) => {
@@ -170,7 +170,7 @@ impl Backend {
bkerror!(r, tx, BKResponse::CommandError);
}
Ok(BKCommand::UserSearch(term)) => {
- let r = user::search(self, term);
+ let r = user::search(self, &term);
bkerror!(r, tx, BKResponse::CommandError);
}
@@ -206,7 +206,7 @@ impl Backend {
bkerror!(r, tx, BKResponse::SendMsgError);
}
Ok(BKCommand::SendMsgRedaction(msg)) => {
- let r = room::redact_msg(self, msg);
+ let r = room::redact_msg(self, &msg);
bkerror!(r, tx, BKResponse::SendMsgRedactionError);
}
Ok(BKCommand::SetRoom(id)) => {
@@ -222,23 +222,23 @@ impl Backend {
bkerror!(r, tx, BKResponse::JoinRoomError);
}
Ok(BKCommand::LeaveRoom(roomid)) => {
- let r = room::leave_room(self, roomid);
+ let r = room::leave_room(self, &roomid);
bkerror!(r, tx, BKResponse::LeaveRoomError);
}
Ok(BKCommand::MarkAsRead(roomid, evid)) => {
- let r = room::mark_as_read(self, roomid, evid);
+ let r = room::mark_as_read(self, &roomid, &evid);
bkerror!(r, tx, BKResponse::MarkAsReadError);
}
Ok(BKCommand::SetRoomName(roomid, name)) => {
- let r = room::set_room_name(self, roomid, name);
+ let r = room::set_room_name(self, &roomid, &name);
bkerror!(r, tx, BKResponse::SetRoomNameError);
}
Ok(BKCommand::SetRoomTopic(roomid, topic)) => {
- let r = room::set_room_topic(self, roomid, topic);
+ let r = room::set_room_topic(self, &roomid, &topic);
bkerror!(r, tx, BKResponse::SetRoomTopicError);
}
Ok(BKCommand::SetRoomAvatar(roomid, fname)) => {
- let r = room::set_room_avatar(self, roomid, fname);
+ let r = room::set_room_avatar(self, &roomid, &fname);
bkerror!(r, tx, BKResponse::SetRoomAvatarError);
}
Ok(BKCommand::AttachFile(msg)) => {
@@ -246,13 +246,13 @@ impl Backend {
bkerror!(r, tx, BKResponse::AttachFileError);
}
Ok(BKCommand::NewRoom(name, privacy, internalid)) => {
- let r = room::new_room(self, name, privacy, internalid.clone());
+ let r = room::new_room(self, &name, privacy, internalid.clone());
if let Err(e) = r {
tx.send(BKResponse::NewRoomError(e, internalid)).unwrap();
}
}
Ok(BKCommand::DirectChat(user, internalid)) => {
- let r = room::direct_chat(self, user, internalid.clone());
+ let r = room::direct_chat(self, &user, internalid.clone());
if let Err(e) = r {
tx.send(BKResponse::NewRoomError(e, internalid)).unwrap();
}
@@ -266,11 +266,11 @@ impl Backend {
bkerror!(r, tx, BKResponse::AcceptInvError);
}
Ok(BKCommand::RejectInv(roomid)) => {
- let r = room::leave_room(self, roomid);
+ let r = room::leave_room(self, &roomid);
bkerror!(r, tx, BKResponse::RejectInvError);
}
Ok(BKCommand::Invite(room, userid)) => {
- let r = room::invite(self, room, userid);
+ let r = room::invite(self, &room, &userid);
bkerror!(r, tx, BKResponse::InviteError);
}
@@ -284,7 +284,7 @@ impl Backend {
bkerror!(r, tx, BKResponse::CommandError);
}
Ok(BKCommand::GetMediaListAsync(roomid, first_media_id, prev_batch, ctx)) => {
- let r = media::get_media_list_async(self, roomid, first_media_id, prev_batch, ctx);
+ let r = media::get_media_list_async(self, &roomid, first_media_id, prev_batch, ctx);
bkerror!(r, tx, BKResponse::CommandError);
}
Ok(BKCommand::GetMedia(media)) => {
@@ -331,7 +331,7 @@ impl Backend {
bkerror!(r, tx, BKResponse::StickersError);
}
Ok(BKCommand::SendSticker(room, sticker)) => {
- let r = stickers::send(self, room, &sticker);
+ let r = stickers::send(self, &room, &sticker);
bkerror!(r, tx, BKResponse::StickersError);
}
Ok(BKCommand::PurchaseSticker(group)) => {
diff --git a/fractal-matrix-api/src/backend/register.rs b/fractal-matrix-api/src/backend/register.rs
index eb6b3f0..d1fa20d 100644
--- a/fractal-matrix-api/src/backend/register.rs
+++ b/fractal-matrix-api/src/backend/register.rs
@@ -11,12 +11,11 @@ use util::json_q;
use backend::types::BKResponse;
use backend::types::Backend;
-pub fn guest(bk: &Backend, server: String) -> Result<(), Error> {
- let s = server.clone();
- let url = Url::parse(&s)
+pub fn guest(bk: &Backend, server: &str) -> Result<(), Error> {
+ let url = Url::parse(server)
.unwrap()
.join("/_matrix/client/r0/register?kind=guest")?;
- bk.data.lock().unwrap().server_url = s;
+ bk.data.lock().unwrap().server_url = String::from(server);
let data = bk.data.clone();
let tx = bk.tx.clone();
@@ -40,7 +39,7 @@ pub fn guest(bk: &Backend, server: String) -> Result<(), Error> {
Ok(())
}
-fn build_login_attrs(user: String, password: String) -> Result<JsonValue, Error> {
+fn build_login_attrs(user: &str, password: &str) -> Result<JsonValue, Error> {
let emailre = Regex::new(
r"^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z])+@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$",
)?;
@@ -53,11 +52,11 @@ fn build_login_attrs(user: String, password: String) -> Result<JsonValue, Error>
"password": password,
"initial_device_display_name": "Fractal",
"medium": "email",
- "address": user.clone(),
+ "address": user,
"identifier": {
"type": "m.id.thirdparty",
"medium": "email",
- "address": user.clone()
+ "address": user,
}
});
} else {
@@ -72,10 +71,10 @@ fn build_login_attrs(user: String, password: String) -> Result<JsonValue, Error>
Ok(attrs)
}
-pub fn login(bk: &Backend, user: String, password: String, server: String) -> Result<(), Error> {
- let s = server.clone();
+pub fn login(bk: &Backend, user: &str, password: &str, server: &str) -> Result<(), Error> {
+ let s = String::from(server);
bk.data.lock().unwrap().server_url = s;
- let url = bk.url("login", vec![])?;
+ let url = bk.url("login", &[])?;
let attrs = build_login_attrs(user, password)?;
let data = bk.data.clone();
@@ -105,8 +104,8 @@ pub fn login(bk: &Backend, user: String, password: String, server: String) -> Re
Ok(())
}
-pub fn set_token(bk: &Backend, token: String, uid: String, server: String) -> Result<(), Error> {
- let s = server.clone();
+pub fn set_token(bk: &Backend, token: String, uid: String, server: &str) -> Result<(), Error> {
+ let s = String::from(server);
bk.data.lock().unwrap().server_url = s;
bk.data.lock().unwrap().access_token = token.clone();
bk.data.lock().unwrap().user_id = uid.clone();
@@ -117,7 +116,7 @@ pub fn set_token(bk: &Backend, token: String, uid: String, server: String) -> Re
}
pub fn logout(bk: &Backend) -> Result<(), Error> {
- let url = bk.url("logout", vec![])?;
+ let url = bk.url("logout", &[])?;
let attrs = json!({});
let data = bk.data.clone();
@@ -136,10 +135,10 @@ pub fn logout(bk: &Backend) -> Result<(), Error> {
Ok(())
}
-pub fn register(bk: &Backend, user: String, password: String, server: String) -> Result<(), Error> {
- let s = server.clone();
+pub fn register(bk: &Backend, user: &str, password: &str, server: &str) -> Result<(), Error> {
+ let s = String::from(server);
bk.data.lock().unwrap().server_url = s;
- let url = bk.url("register", vec![("kind", String::from("user"))])?;
+ let url = bk.url("register", &vec![("kind", String::from("user"))])?;
let attrs = json!({
"auth": {"type": "m.login.password"},
diff --git a/fractal-matrix-api/src/backend/room.rs b/fractal-matrix-api/src/backend/room.rs
index 552c384..6e9d5c1 100644
--- a/fractal-matrix-api/src/backend/room.rs
+++ b/fractal-matrix-api/src/backend/room.rs
@@ -38,7 +38,7 @@ pub fn set_room(bk: &Backend, id: String) -> Result<(), Error> {
}
pub fn get_room_detail(bk: &Backend, roomid: String, key: String) -> Result<(), Error> {
- let url = bk.url(&format!("rooms/{}/state/{}", roomid, key), vec![])?;
+ let url = bk.url(&format!("rooms/{}/state/{}", roomid, key), &[])?;
let tx = bk.tx.clone();
let keys = key.clone();
@@ -60,7 +60,7 @@ pub fn get_room_avatar(bk: &Backend, roomid: String) -> Result<(), Error> {
let userid = bk.data.lock().unwrap().user_id.clone();
let baseu = bk.get_base_url()?;
let tk = bk.data.lock().unwrap().access_token.clone();
- let url = bk.url(&format!("rooms/{}/state/m.room.avatar", roomid), vec![])?;
+ let url = bk.url(&format!("rooms/{}/state/m.room.avatar", roomid), &[])?;
let tx = bk.tx.clone();
get!(
@@ -96,7 +96,7 @@ pub fn get_room_avatar(bk: &Backend, roomid: String) -> Result<(), Error> {
}
pub fn get_room_members(bk: &Backend, roomid: String) -> Result<(), Error> {
- let url = bk.url(&format!("rooms/{}/joined_members", roomid), vec![])?;
+ let url = bk.url(&format!("rooms/{}/joined_members", roomid), &[])?;
let tx = bk.tx.clone();
get!(
@@ -132,14 +132,14 @@ pub fn get_room_messages(bk: &Backend, roomid: String, from: String) -> Result<(
"{ \"types\": [\"m.room.message\", \"m.sticker\"] }".to_string(),
),
];
- let url = bk.url(&format!("rooms/{}/messages", roomid), params)?;
+ let url = bk.url(&format!("rooms/{}/messages", roomid), ¶ms)?;
let tx = bk.tx.clone();
get!(
&url,
|r: JsonValue| {
let array = r["chunk"].as_array();
let evs = array.unwrap().iter().rev();
- let list = Message::from_json_events_iter(roomid.clone(), evs);
+ let list = Message::from_json_events_iter(&roomid, evs);
let prev_batch = r["end"].as_str().map(String::from);
tx.send(BKResponse::RoomMessagesTo(list, roomid, prev_batch))
.unwrap();
@@ -159,7 +159,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.clone(), id) {
+ if let Ok(from) = util::get_prev_batch_from(&baseu, &tk, &roomid, &id) {
if let Some(t) = tx {
t.send(BKCommand::GetRoomMessages(roomid, from)).unwrap();
}
@@ -174,13 +174,13 @@ fn parse_context(
tk: String,
baseu: Url,
roomid: String,
- eid: String,
+ eid: &str,
limit: i32,
) -> Result<(), Error> {
let url = client_url(
&baseu,
&format!("rooms/{}/context/{}", roomid, eid),
- vec![
+ &vec![
("limit", format!("{}", limit)),
("access_token", tk.clone()),
],
@@ -202,14 +202,14 @@ fn parse_context(
continue;
}
- let m = Message::parse_room_message(roomid.clone(), msg);
+ let m = Message::parse_room_message(&roomid, msg);
ms.push(m);
}
if ms.len() == 0 && id.is_some() {
// there's no messages so we'll try with a bigger context
if let Err(err) =
- parse_context(tx.clone(), tk, baseu, roomid, id.unwrap(), limit * 2)
+ parse_context(tx.clone(), tk, baseu, roomid, &id.unwrap(), limit * 2)
{
tx.send(BKResponse::RoomMessagesError(err)).unwrap();
}
@@ -231,7 +231,7 @@ pub fn get_message_context(bk: &Backend, msg: Message) -> Result<(), Error> {
let msgid = msg.id.unwrap_or_default();
let tk = bk.data.lock().unwrap().access_token.clone();
- parse_context(tx, tk, baseu, roomid, msgid, globals::PAGE_LIMIT)?;
+ parse_context(tx, tk, baseu, roomid, &msgid, globals::PAGE_LIMIT)?;
Ok(())
}
@@ -240,10 +240,7 @@ pub fn send_msg(bk: &Backend, msg: Message) -> Result<(), Error> {
let roomid = msg.room.clone();
let id = msg.id.unwrap_or_default();
- let url = bk.url(
- &format!("rooms/{}/send/m.room.message/{}", roomid, id),
- vec![],
- )?;
+ let url = bk.url(&format!("rooms/{}/send/m.room.message/{}", roomid, id), &[])?;
let mut attrs = json!({
"body": msg.body.clone(),
@@ -285,15 +282,12 @@ pub fn send_msg(bk: &Backend, msg: Message) -> Result<(), Error> {
Ok(())
}
-pub fn redact_msg(bk: &Backend, msg: Message) -> Result<(), Error> {
+pub fn redact_msg(bk: &Backend, msg: &Message) -> Result<(), Error> {
let roomid = msg.room.clone();
let msgid = msg.id.clone().unwrap_or_default();
let txnid = msg.get_txn_id();
- let url = bk.url(
- &format!("rooms/{}/redact/{}/{}", roomid, msgid, txnid),
- vec![],
- )?;
+ let url = bk.url(&format!("rooms/{}/redact/{}/{}", roomid, msgid, txnid), &[])?;
let attrs = json!({
"reason": "Deletion requested by the sender"
@@ -321,7 +315,7 @@ pub fn redact_msg(bk: &Backend, msg: Message) -> Result<(), Error> {
}
pub fn join_room(bk: &Backend, roomid: String) -> Result<(), Error> {
- let url = bk.url(&format!("join/{}", urlencoding::encode(&roomid)), vec![])?;
+ let url = bk.url(&format!("join/{}", urlencoding::encode(&roomid)), &[])?;
let tx = bk.tx.clone();
let data = bk.data.clone();
@@ -339,8 +333,8 @@ pub fn join_room(bk: &Backend, roomid: String) -> Result<(), Error> {
Ok(())
}
-pub fn leave_room(bk: &Backend, roomid: String) -> Result<(), Error> {
- let url = bk.url(&format!("rooms/{}/leave", roomid), vec![])?;
+pub fn leave_room(bk: &Backend, roomid: &str) -> Result<(), Error> {
+ let url = bk.url(&format!("rooms/{}/leave", roomid), &[])?;
let tx = bk.tx.clone();
post!(
@@ -356,15 +350,12 @@ pub fn leave_room(bk: &Backend, roomid: String) -> Result<(), Error> {
Ok(())
}
-pub fn mark_as_read(bk: &Backend, roomid: String, eventid: String) -> Result<(), Error> {
- let url = bk.url(
- &format!("rooms/{}/receipt/m.read/{}", roomid, eventid),
- vec![],
- )?;
+pub fn mark_as_read(bk: &Backend, roomid: &str, eventid: &str) -> Result<(), Error> {
+ let url = bk.url(&format!("rooms/{}/receipt/m.read/{}", roomid, eventid), &[])?;
let tx = bk.tx.clone();
- let r = roomid.clone();
- let e = eventid.clone();
+ let r = String::from(roomid);
+ let e = String::from(eventid);
post!(
&url,
move |_: JsonValue| {
@@ -379,7 +370,7 @@ pub fn mark_as_read(bk: &Backend, roomid: String, eventid: String) -> Result<(),
// This event API call isn't in the current doc but I found this in the
// matrix-js-sdk
// https://github.com/matrix-org/matrix-js-sdk/blob/master/src/base-apis.js#L851
- let url = bk.url(&format!("rooms/{}/read_markers", roomid), vec![])?;
+ let url = bk.url(&format!("rooms/{}/read_markers", roomid), &[])?;
let attrs = json!({
"m.fully_read": eventid,
"m.read": json!(null),
@@ -389,8 +380,8 @@ pub fn mark_as_read(bk: &Backend, roomid: String, eventid: String) -> Result<(),
Ok(())
}
-pub fn set_room_name(bk: &Backend, roomid: String, name: String) -> Result<(), Error> {
- let url = bk.url(&format!("rooms/{}/state/m.room.name", roomid), vec![])?;
+pub fn set_room_name(bk: &Backend, roomid: &str, name: &str) -> Result<(), Error> {
+ let url = bk.url(&format!("rooms/{}/state/m.room.name", roomid), &[])?;
let attrs = json!({
"name": name,
@@ -412,8 +403,8 @@ pub fn set_room_name(bk: &Backend, roomid: String, name: String) -> Result<(), E
Ok(())
}
-pub fn set_room_topic(bk: &Backend, roomid: String, topic: String) -> Result<(), Error> {
- let url = bk.url(&format!("rooms/{}/state/m.room.topic", roomid), vec![])?;
+pub fn set_room_topic(bk: &Backend, roomid: &str, topic: &str) -> Result<(), Error> {
+ let url = bk.url(&format!("rooms/{}/state/m.room.topic", roomid), &[])?;
let attrs = json!({
"topic": topic,
@@ -435,12 +426,12 @@ pub fn set_room_topic(bk: &Backend, roomid: String, topic: String) -> Result<(),
Ok(())
}
-pub fn set_room_avatar(bk: &Backend, roomid: String, avatar: String) -> Result<(), Error> {
+pub fn set_room_avatar(bk: &Backend, roomid: &str, avatar: &str) -> Result<(), Error> {
let baseu = bk.get_base_url()?;
let tk = bk.data.lock().unwrap().access_token.clone();
let params = vec![("access_token", tk.clone())];
- let mediaurl = media_url(&baseu, "upload", params)?;
- let roomurl = bk.url(&format!("rooms/{}/state/m.room.avatar", roomid), vec![])?;
+ let mediaurl = media_url(&baseu, "upload", ¶ms)?;
+ let roomurl = bk.url(&format!("rooms/{}/state/m.room.avatar", roomid), &[])?;
let mut file = File::open(&avatar)?;
let mut contents: Vec<u8> = vec![];
@@ -484,7 +475,7 @@ pub fn attach_file(bk: &Backend, msg: Message) -> Result<(), Error> {
let baseu = bk.get_base_url()?;
let tk = bk.data.lock().unwrap().access_token.clone();
let params = vec![("access_token", tk.clone())];
- let mediaurl = media_url(&baseu, "upload", params)?;
+ let mediaurl = media_url(&baseu, "upload", ¶ms)?;
let mut m = msg.clone();
let tx = bk.tx.clone();
@@ -510,11 +501,11 @@ pub fn attach_file(bk: &Backend, msg: Message) -> Result<(), Error> {
pub fn new_room(
bk: &Backend,
- name: String,
+ name: &str,
privacy: RoomType,
internal_id: String,
) -> Result<(), Error> {
- let url = bk.url("createRoom", vec![])?;
+ let url = bk.url("createRoom", &[])?;
let attrs = json!({
"invite": [],
"invite_3pid": [],
@@ -530,7 +521,7 @@ pub fn new_room(
},
});
- let n = name.clone();
+ let n = String::from(name);
let tx = bk.tx.clone();
post!(
&url,
@@ -548,8 +539,8 @@ pub fn new_room(
Ok(())
}
-pub fn direct_chat(bk: &Backend, user: Member, internal_id: String) -> Result<(), Error> {
- let url = bk.url("createRoom", vec![])?;
+pub fn direct_chat(bk: &Backend, user: &Member, internal_id: String) -> Result<(), Error> {
+ let url = bk.url("createRoom", &[])?;
let attrs = json!({
"invite": [user.uid.clone()],
"invite_3pid": [],
@@ -559,7 +550,7 @@ pub fn direct_chat(bk: &Backend, user: Member, internal_id: String) -> Result<()
});
let userid = bk.data.lock().unwrap().user_id.clone();
- let direct_url = bk.url(&format!("user/{}/account_data/m.direct", userid), vec![])?;
+ let direct_url = bk.url(&format!("user/{}/account_data/m.direct", userid), &[])?;
let m = user.clone();
let tx = bk.tx.clone();
@@ -602,7 +593,7 @@ pub fn add_to_fav(bk: &Backend, roomid: String, tofav: bool) -> Result<(), Error
let userid = bk.data.lock().unwrap().user_id.clone();
let url = bk.url(
&format!("user/{}/rooms/{}/tags/m.favourite", userid, roomid),
- vec![],
+ &[],
)?;
let attrs = json!({
@@ -627,8 +618,8 @@ pub fn add_to_fav(bk: &Backend, roomid: String, tofav: bool) -> Result<(), Error
Ok(())
}
-pub fn invite(bk: &Backend, roomid: String, userid: String) -> Result<(), Error> {
- let url = bk.url(&format!("rooms/{}/invite", roomid), vec![])?;
+pub fn invite(bk: &Backend, roomid: &str, userid: &str) -> Result<(), Error> {
+ let url = bk.url(&format!("rooms/{}/invite", roomid), &[])?;
let attrs = json!({
"user_id": userid,
diff --git a/fractal-matrix-api/src/backend/stickers.rs b/fractal-matrix-api/src/backend/stickers.rs
index 074802a..ff9110c 100644
--- a/fractal-matrix-api/src/backend/stickers.rs
+++ b/fractal-matrix-api/src/backend/stickers.rs
@@ -33,7 +33,7 @@ pub fn list(bk: &Backend) -> Result<(), Error> {
("widget_id", widget_id),
("filter_unpurchased", "true".to_string()),
];
- let url = vurl(bk.data.clone(), "widgets/assets", data)?;
+ let url = vurl(&bk.data, "widgets/assets", &data)?;
let tx = bk.tx.clone();
get!(
@@ -61,7 +61,7 @@ pub fn get_sticker_widget_id(bk: &Backend, then: BKCommand) -> Result<(), Error>
let tx = bk.internal_tx.clone();
thread::spawn(move || {
- let url = vurl(d.clone(), "widgets/request", vec![]).unwrap();
+ let url = vurl(&d, "widgets/request", &[]).unwrap();
match json_q("post", &url, &data, globals::TIMEOUT) {
Ok(r) => {
let mut id = "".to_string();
@@ -91,14 +91,14 @@ pub fn get_sticker_widget_id(bk: &Backend, then: BKCommand) -> Result<(), Error>
Ok(())
}
-pub fn send(bk: &Backend, roomid: String, sticker: &Sticker) -> Result<(), Error> {
+pub fn send(bk: &Backend, roomid: &str, sticker: &Sticker) -> Result<(), Error> {
let now = Local::now();
let msg = format!("{}{}{}", roomid, sticker.name, now.to_string());
let digest = md5::compute(msg.as_bytes());
// TODO: we need to generate the msg.id in the frontend
let id = format!("{:x}", digest);
- let url = bk.url(&format!("rooms/{}/send/m.sticker/{}", roomid, id), vec![])?;
+ let url = bk.url(&format!("rooms/{}/send/m.sticker/{}", roomid, id), &[])?;
let attrs = json!({
"body": sticker.body.clone(),
@@ -142,7 +142,7 @@ pub fn purchase(bk: &Backend, group: &StickerGroup) -> Result<(), Error> {
("widget_id", widget_id.clone()),
("widget_type", "m.stickerpicker".to_string()),
];
- let url = vurl(bk.data.clone(), "widgets/purchase_asset", data)?;
+ let url = vurl(&bk.data, "widgets/purchase_asset", &data)?;
let tx = bk.tx.clone();
let itx = bk.internal_tx.clone();
get!(
@@ -156,35 +156,31 @@ pub fn purchase(bk: &Backend, group: &StickerGroup) -> Result<(), Error> {
Ok(())
}
-fn get_base_url(data: Arc<Mutex<BackendData>>) -> Result<Url, Error> {
+fn get_base_url(data: &Arc<Mutex<BackendData>>) -> Result<Url, Error> {
let s = data.lock().unwrap().server_url.clone();
let url = Url::parse(&s)?;
Ok(url)
}
fn url(
- data: Arc<Mutex<BackendData>>,
+ data: &Arc<Mutex<BackendData>>,
path: &str,
- params: Vec<(&str, String)>,
+ params: &[(&str, String)],
) -> Result<Url, Error> {
- let base = get_base_url(data.clone())?;
+ let base = get_base_url(data)?;
let tk = data.lock().unwrap().access_token.clone();
let mut params2 = params.to_vec();
params2.push(("access_token", tk.clone()));
- client_url(&base, path, params2)
+ client_url(&base, path, ¶ms2)
}
-fn get_scalar_token(data: Arc<Mutex<BackendData>>) -> Result<String, Error> {
+fn get_scalar_token(data: &Arc<Mutex<BackendData>>) -> Result<String, Error> {
let s = data.lock().unwrap().scalar_url.clone();
let uid = data.lock().unwrap().user_id.clone();
- let url = url(
- data.clone(),
- &format!("user/{}/openid/request_token", uid),
- vec![],
- )?;
+ let url = url(data, &format!("user/{}/openid/request_token", uid), &[])?;
let js = json_q("post", &url, &json!({}), globals::TIMEOUT)?;
let vurl = Url::parse(&format!("{}/api/register", s))?;
@@ -200,20 +196,20 @@ fn get_scalar_token(data: Arc<Mutex<BackendData>>) -> Result<String, Error> {
}
fn vurl(
- data: Arc<Mutex<BackendData>>,
+ data: &Arc<Mutex<BackendData>>,
path: &str,
- params: Vec<(&str, String)>,
+ params: &[(&str, String)],
) -> Result<Url, Error> {
let s = data.lock().unwrap().scalar_url.clone();
let base = Url::parse(&s)?;
let token = data.lock().unwrap().scalar_token.clone();
let tk = match token {
- None => get_scalar_token(data)?,
+ None => get_scalar_token(&data)?,
Some(t) => t.clone(),
};
let mut params2 = params.to_vec();
params2.push(("scalar_token", tk));
- scalar_url(&base, path, params2)
+ scalar_url(&base, path, ¶ms2)
}
diff --git a/fractal-matrix-api/src/backend/sync.rs b/fractal-matrix-api/src/backend/sync.rs
index 6db09d2..a99f131 100644
--- a/fractal-matrix-api/src/backend/sync.rs
+++ b/fractal-matrix-api/src/backend/sync.rs
@@ -56,7 +56,7 @@ pub fn sync(bk: &Backend, new_since: Option<String>, initial: bool) -> Result<()
}
let baseu = bk.get_base_url()?;
- let url = bk.url("sync", params)?;
+ let url = bk.url("sync", ¶ms)?;
let tx = bk.tx.clone();
let data = bk.data.clone();
@@ -75,7 +75,7 @@ pub fn sync(bk: &Backend, new_since: Option<String>, initial: bool) -> Result<()
};
// Message events
- match get_rooms_timeline_from_json(&baseu, &r, tk.clone(), since.clone()) {
+ match get_rooms_timeline_from_json(&baseu, &r, &tk, &since) {
Ok(msgs) => tx.send(BKResponse::RoomMessages(msgs)).unwrap(),
Err(err) => tx.send(BKResponse::RoomMessagesError(err)).unwrap(),
};
diff --git a/fractal-matrix-api/src/backend/types.rs b/fractal-matrix-api/src/backend/types.rs
index 5919b6e..72d2a20 100644
--- a/fractal-matrix-api/src/backend/types.rs
+++ b/fractal-matrix-api/src/backend/types.rs
@@ -177,7 +177,7 @@ pub enum BKResponse {
StickersError(Error),
}
-#[derive(Debug)]
+#[derive(Debug, Clone, Copy)]
pub enum RoomType {
Public,
Private,
diff --git a/fractal-matrix-api/src/backend/user.rs b/fractal-matrix-api/src/backend/user.rs
index 75166ab..1de1308 100644
--- a/fractal-matrix-api/src/backend/user.rs
+++ b/fractal-matrix-api/src/backend/user.rs
@@ -25,7 +25,7 @@ use serde_json::Value as JsonValue;
pub fn get_username(bk: &Backend) -> Result<(), Error> {
let id = bk.data.lock().unwrap().user_id.clone();
- let url = bk.url(&format!("profile/{}/displayname", encode_uid(&id)), vec![])?;
+ let url = bk.url(&format!("profile/{}/displayname", encode_uid(&id)), &[])?;
let tx = bk.tx.clone();
get!(
&url,
@@ -41,7 +41,7 @@ pub fn get_username(bk: &Backend) -> Result<(), Error> {
pub fn set_username(bk: &Backend, name: String) -> Result<(), Error> {
let id = bk.data.lock().unwrap().user_id.clone();
- let url = bk.url(&format!("profile/{}/displayname", encode_uid(&id)), vec![])?;
+ let url = bk.url(&format!("profile/{}/displayname", encode_uid(&id)), &[])?;
let attrs = json!({
"displayname": name,
@@ -64,7 +64,7 @@ pub fn set_username(bk: &Backend, name: String) -> Result<(), Error> {
}
pub fn get_threepid(bk: &Backend) -> Result<(), Error> {
- let url = bk.url(&format!("account/3pid"), vec![])?;
+ let url = bk.url(&format!("account/3pid"), &[])?;
let tx = bk.tx.clone();
get!(
&url,
@@ -107,11 +107,11 @@ pub fn get_threepid(bk: &Backend) -> Result<(), Error> {
pub fn get_email_token(
bk: &Backend,
- identity: String,
- email: String,
+ identity: &str,
+ email: &str,
client_secret: String,
) -> Result<(), Error> {
- let url = bk.url(&format!("account/3pid/email/requestToken"), vec![])?;
+ let url = bk.url("account/3pid/email/requestToken", &[])?;
let attrs = json!({
"id_server": identity[8..],
@@ -146,11 +146,11 @@ pub fn get_email_token(
pub fn get_phone_token(
bk: &Backend,
- identity: String,
- phone: String,
+ identity: &str,
+ phone: &str,
client_secret: String,
) -> Result<(), Error> {
- let url = bk.url(&format!("account/3pid/msisdn/requestToken"), vec![])?;
+ let url = bk.url(&format!("account/3pid/msisdn/requestToken"), &[])?;
let attrs = json!({
"id_server": identity[8..],
@@ -186,11 +186,11 @@ pub fn get_phone_token(
pub fn add_threepid(
bk: &Backend,
- identity: String,
- client_secret: String,
+ identity: &str,
+ client_secret: &str,
sid: String,
) -> Result<(), Error> {
- let url = bk.url(&format!("account/3pid"), vec![])?;
+ let url = bk.url(&format!("account/3pid"), &[])?;
let attrs = json!({
"three_pid_creds": {
"id_server": identity[8..],
@@ -217,7 +217,7 @@ pub fn add_threepid(
pub fn submit_phone_token(
bk: &Backend,
- url: String,
+ url: &str,
client_secret: String,
sid: String,
token: String,
@@ -228,7 +228,7 @@ pub fn submit_phone_token(
("token", token),
];
let path = "/_matrix/identity/api/v1/validate/msisdn/submitToken";
- let url = build_url(&Url::parse(&url)?, path, params)?;
+ let url = build_url(&Url::parse(&url)?, path, ¶ms)?;
let tx = bk.tx.clone();
post!(
@@ -250,7 +250,7 @@ pub fn submit_phone_token(
Ok(())
}
-pub fn delete_three_pid(bk: &Backend, medium: String, address: String) -> Result<(), Error> {
+pub fn delete_three_pid(bk: &Backend, medium: &str, address: &str) -> Result<(), Error> {
let baseu = bk.get_base_url()?;
let tk = bk.data.lock().unwrap().access_token.clone();
let mut url = baseu.join("/_matrix/client/unstable/account/3pid/delete")?;
@@ -279,11 +279,11 @@ pub fn delete_three_pid(bk: &Backend, medium: String, address: String) -> Result
pub fn change_password(
bk: &Backend,
- username: String,
- old_password: String,
- new_password: String,
+ username: &str,
+ old_password: &str,
+ new_password: &str,
) -> Result<(), Error> {
- let url = bk.url(&format!("account/password"), vec![])?;
+ let url = bk.url(&format!("account/password"), &[])?;
let attrs = json!({
"new_password": new_password,
@@ -312,11 +312,11 @@ pub fn change_password(
pub fn account_destruction(
bk: &Backend,
- username: String,
- password: String,
+ username: &str,
+ password: &str,
flag: bool,
) -> Result<(), Error> {
- let url = bk.url(&format!("account/deactivate"), vec![])?;
+ let url = bk.url(&format!("account/deactivate"), &[])?;
let attrs = json!({
"erase": flag,
@@ -409,7 +409,7 @@ pub fn get_user_info_async(
}
pub fn get_username_async(bk: &Backend, uid: String, tx: Sender<String>) -> Result<(), Error> {
- let url = bk.url(&format!("profile/{}/displayname", encode_uid(&uid)), vec![])?;
+ let url = bk.url(&format!("profile/{}/displayname", encode_uid(&uid)), &[])?;
get!(
&url,
|r: JsonValue| {
@@ -441,8 +441,8 @@ pub fn get_avatar_async(
semaphore(bk.limit_threads.clone(), move || match get_user_avatar_img(
&baseu,
- uid,
- avatar.unwrap_or_default(),
+ &uid,
+ &avatar.unwrap_or_default(),
) {
Ok(fname) => {
tx.send(fname.clone()).unwrap();
@@ -460,8 +460,8 @@ pub fn set_user_avatar(bk: &Backend, avatar: String) -> Result<(), Error> {
let id = bk.data.lock().unwrap().user_id.clone();
let tk = bk.data.lock().unwrap().access_token.clone();
let params = vec![("access_token", tk.clone())];
- let mediaurl = media_url(&baseu, "upload", params)?;
- let url = bk.url(&format!("profile/{}/avatar_url", encode_uid(&id)), vec![])?;
+ let mediaurl = media_url(&baseu, "upload", ¶ms)?;
+ let url = bk.url(&format!("profile/{}/avatar_url", encode_uid(&id)), &[])?;
let mut file = File::open(&avatar)?;
let mut contents: Vec<u8> = vec![];
@@ -491,8 +491,8 @@ pub fn set_user_avatar(bk: &Backend, avatar: String) -> Result<(), Error> {
Ok(())
}
-pub fn search(bk: &Backend, term: String) -> Result<(), Error> {
- let url = bk.url(&format!("user_directory/search"), vec![])?;
+pub fn search(bk: &Backend, term: &str) -> Result<(), Error> {
+ let url = bk.url(&format!("user_directory/search"), &[])?;
let attrs = json!({
"search_term": term,
diff --git a/fractal-matrix-api/src/model/message.rs b/fractal-matrix-api/src/model/message.rs
index 2a7bc94..24767bf 100644
--- a/fractal-matrix-api/src/model/message.rs
+++ b/fractal-matrix-api/src/model/message.rs
@@ -110,7 +110,7 @@ impl Message {
///
/// * `roomid` - The message room id
/// * `msg` - The message event as Json
- pub fn parse_room_message(roomid: String, msg: &JsonValue) -> Message {
+ pub fn parse_room_message(roomid: &str, msg: &JsonValue) -> Message {
let sender = msg["sender"].as_str().unwrap_or("");
let timestamp = msg["origin_server_ts"].as_i64().unwrap_or(0) / 1000;
@@ -124,7 +124,7 @@ impl Message {
let mut message = Message {
sender: sender.to_string(),
date: server_timestamp,
- room: roomid.clone(),
+ room: String::from(roomid),
id: Some(id.to_string()),
mtype: type_.to_string(),
body: "".to_string(),
@@ -200,7 +200,7 @@ impl Message {
///
/// * `roomid` - The messages room id
/// * `events` - An iterator to the json events
- pub fn from_json_events_iter<'a, I>(roomid: String, events: I) -> Vec<Message>
+ pub fn from_json_events_iter<'a, I>(roomid: &str, events: I) -> Vec<Message>
where
I: Iterator<Item = &'a JsonValue>,
{
diff --git a/fractal-matrix-api/src/util.rs b/fractal-matrix-api/src/util.rs
index b97d602..f8f616d 100644
--- a/fractal-matrix-api/src/util.rs
+++ b/fractal-matrix-api/src/util.rs
@@ -227,7 +227,7 @@ pub fn get_rooms_from_json(r: &JsonValue, userid: &str, baseu: &Url) -> Result<V
}
if let Some(evs) = timeline["events"].as_array() {
- let ms = Message::from_json_events_iter(k.clone(), evs.iter());
+ let ms = Message::from_json_events_iter(&k, evs.iter());
r.messages.extend(ms);
}
@@ -333,8 +333,8 @@ pub fn get_admins(stevents: &JsonValue) -> HashMap<String, i32> {
pub fn get_rooms_timeline_from_json(
baseu: &Url,
r: &JsonValue,
- tk: String,
- prev_batch: String,
+ tk: &str,
+ prev_batch: &str,
) -> Result<Vec<Message>, Error> {
let rooms = &r["rooms"];
let join = rooms["join"].as_object().ok_or(Error::BackendError)?;
@@ -348,13 +348,8 @@ pub fn get_rooms_timeline_from_json(
room["timeline"]["prev_batch"].as_str(),
) {
let pbs = pb.to_string();
- let fill_the_gap = fill_room_gap(
- baseu,
- tk.clone(),
- k.clone(),
- prev_batch.clone(),
- pbs.clone(),
- )?;
+ let fill_the_gap =
+ fill_room_gap(baseu, String::from(tk), k.clone(), &prev_batch, &pbs)?;
for m in fill_the_gap {
msgs.push(m);
}
@@ -366,7 +361,7 @@ pub fn get_rooms_timeline_from_json(
}
let events = timeline.unwrap().iter();
- let ms = Message::from_json_events_iter(k.clone(), events);
+ let ms = Message::from_json_events_iter(&k, events);
msgs.extend(ms);
}
@@ -427,14 +422,14 @@ pub fn parse_sync_events(r: &JsonValue) -> Result<Vec<Event>, Error> {
pub fn get_prev_batch_from(
baseu: &Url,
- tk: String,
- roomid: String,
- evid: String,
+ tk: &str,
+ roomid: &str,
+ evid: &str,
) -> Result<String, Error> {
- let params = vec![("access_token", tk.clone()), ("limit", 0.to_string())];
+ let params = vec![("access_token", String::from(tk)), ("limit", 0.to_string())];
let path = format!("rooms/{}/context/{}", roomid, evid);
- let url = client_url(baseu, &path, params)?;
+ let url = client_url(baseu, &path, ¶ms)?;
let r = json_q("get", &url, &json!(null), globals::TIMEOUT)?;
let prev_batch = r["start"].to_string().trim_matches('"').to_string();
@@ -444,16 +439,16 @@ pub fn get_prev_batch_from(
pub fn get_room_media_list(
baseu: &Url,
- tk: String,
- roomid: String,
+ tk: &str,
+ roomid: &str,
limit: i32,
first_media_id: Option<String>,
- prev_batch: Option<String>,
+ prev_batch: &Option<String>,
) -> Result<(Vec<Message>, String), Error> {
let mut params = vec![
("dir", String::from("b")),
("limit", format!("{}", limit)),
- ("access_token", tk.clone()),
+ ("access_token", String::from(tk)),
(
"filter",
"{\"filter_json\": { \"contains_url\": true, \"not_types\": [\"m.sticker\"] } }"
@@ -465,13 +460,13 @@ pub fn get_room_media_list(
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.clone(), 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 url = client_url(baseu, &path, ¶ms)?;
let r = json_q("get", &url, &json!(null), globals::TIMEOUT)?;
let array = r["chunk"].as_array();
@@ -481,7 +476,7 @@ pub fn get_room_media_list(
}
let evs = array.unwrap().iter().rev();
- let media_list = Message::from_json_events_iter(roomid.clone(), evs);
+ let media_list = Message::from_json_events_iter(roomid, evs);
Ok((media_list, prev_batch))
}
@@ -529,7 +524,7 @@ pub fn resolve_media_url(base: &Url, url: &str, thumb: bool, w: i32, h: i32) ->
path = format!("download/{}/{}", server, media);
}
- media_url(base, &path, params)
+ media_url(base, &path, ¶ms)
}
pub fn dw_media(
@@ -557,7 +552,7 @@ pub fn dw_media(
path = format!("download/{}/{}", server, media);
}
- let url = media_url(base, &path, params)?;
+ let url = media_url(base, &path, ¶ms)?;
let fname = match dest {
None if thumb => cache_dir_path("thumbs", &media)?,
@@ -658,7 +653,7 @@ pub fn json_q(
}
pub fn get_user_avatar(baseu: &Url, userid: &str) -> Result<(String, String), Error> {
- let url = client_url(baseu, &format!("profile/{}", encode_uid(userid)), vec![])?;
+ let url = client_url(baseu, &format!("profile/{}", encode_uid(userid)), &[])?;
let attrs = json!(null);
match json_q("get", &url, &attrs, globals::TIMEOUT) {
@@ -686,7 +681,7 @@ pub fn get_room_st(base: &Url, tk: &str, roomid: &str) -> Result<JsonValue, Erro
let url = client_url(
base,
&format!("rooms/{}/state", roomid),
- vec![("access_token", String::from(tk))],
+ &vec![("access_token", String::from(tk))],
)?;
let attrs = json!(null);
@@ -797,8 +792,8 @@ pub fn fill_room_gap(
baseu: &Url,
tk: String,
roomid: String,
- from: String,
- to: String,
+ from: &str,
+ to: &str,
) -> Result<Vec<Message>, Error> {
let mut ms: Vec<Message> = vec![];
let nend;
@@ -809,11 +804,11 @@ pub fn fill_room_gap(
("access_token", tk.clone()),
];
- params.push(("from", from.clone()));
- params.push(("to", to.clone()));
+ params.push(("from", String::from(from)));
+ params.push(("to", String::from(to)));
let path = format!("rooms/{}/messages", roomid);
- let url = client_url(baseu, &path, params)?;
+ let url = client_url(baseu, &path, ¶ms)?;
let r = json_q("get", &url, &json!(null), globals::TIMEOUT)?;
nend = String::from(r["end"].as_str().unwrap_or(""));
@@ -824,11 +819,11 @@ pub fn fill_room_gap(
}
let evs = array.unwrap().iter();
- let mevents = Message::from_json_events_iter(roomid.clone(), evs);
+ let mevents = Message::from_json_events_iter(&roomid, evs);
ms.extend(mevents);
// loading more until no more messages
- let more = fill_room_gap(baseu, tk, roomid, nend, to)?;
+ let more = fill_room_gap(baseu, tk, roomid, &nend, to)?;
for m in more.iter() {
ms.insert(0, m.clone());
}
@@ -836,7 +831,7 @@ pub fn fill_room_gap(
Ok(ms)
}
-pub fn build_url(base: &Url, path: &str, params: Vec<(&str, String)>) -> Result<Url, Error> {
+pub fn build_url(base: &Url, path: &str, params: &[(&str, String)]) -> Result<Url, Error> {
let mut url = base.join(path)?;
{
@@ -853,15 +848,15 @@ pub fn build_url(base: &Url, path: &str, params: Vec<(&str, String)>) -> Result<
Ok(url)
}
-pub fn client_url(base: &Url, path: &str, params: Vec<(&str, String)>) -> Result<Url, Error> {
+pub fn client_url(base: &Url, path: &str, params: &[(&str, String)]) -> Result<Url, Error> {
build_url(base, &format!("/_matrix/client/r0/{}", path), params)
}
-pub fn scalar_url(base: &Url, path: &str, params: Vec<(&str, String)>) -> Result<Url, Error> {
+pub fn scalar_url(base: &Url, path: &str, params: &[(&str, String)]) -> Result<Url, Error> {
build_url(base, &format!("api/{}", path), params)
}
-pub fn media_url(base: &Url, path: &str, params: Vec<(&str, String)>) -> Result<Url, Error> {
+pub fn media_url(base: &Url, path: &str, params: &[(&str, String)]) -> Result<Url, Error> {
build_url(base, &format!("/_matrix/media/r0/{}", path), params)
}
@@ -900,7 +895,7 @@ pub fn cache_dir_path(dir: &str, name: &str) -> Result<String, Error> {
Ok(path.into_os_string().into_string()?)
}
-pub fn get_user_avatar_img(baseu: &Url, userid: String, avatar: String) -> Result<String, Error> {
+pub fn get_user_avatar_img(baseu: &Url, userid: &str, avatar: &str) -> Result<String, Error> {
if avatar.is_empty() {
return Ok(String::from(""));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]