[fractal] API, room: use endpoint in set_room_avatar



commit 5d4b70002aa9e4d44c99ddebd68b9128f7140f83
Author: Alejandro Domínguez <adomu net-c com>
Date:   Tue Mar 10 00:47:54 2020 +0100

    API, room: use endpoint in set_room_avatar

 fractal-matrix-api/src/backend/mod.rs  |  7 +++++--
 fractal-matrix-api/src/backend/room.rs | 38 ++++++++++------------------------
 2 files changed, 16 insertions(+), 29 deletions(-)
---
diff --git a/fractal-matrix-api/src/backend/mod.rs b/fractal-matrix-api/src/backend/mod.rs
index c1cb6349..5a530ca5 100644
--- a/fractal-matrix-api/src/backend/mod.rs
+++ b/fractal-matrix-api/src/backend/mod.rs
@@ -320,8 +320,11 @@ impl Backend {
                 });
             }
             Ok(BKCommand::SetRoomAvatar(server, access_token, room_id, fname)) => {
-                let r = room::set_room_avatar(self, server, access_token, room_id, fname);
-                bkerror2!(r, tx, BKResponse::SetRoomAvatar);
+                thread::spawn(move || {
+                    let query = room::set_room_avatar(server, access_token, room_id, fname);
+                    tx.send(BKResponse::SetRoomAvatar(query))
+                        .expect_log("Connection closed");
+                });
             }
             Ok(BKCommand::AttachFile(server, access_token, msg)) => {
                 let r = room::attach_file(self, server, access_token, msg);
diff --git a/fractal-matrix-api/src/backend/room.rs b/fractal-matrix-api/src/backend/room.rs
index 279a1d77..2af87ef6 100644
--- a/fractal-matrix-api/src/backend/room.rs
+++ b/fractal-matrix-api/src/backend/room.rs
@@ -490,38 +490,22 @@ pub fn set_room_topic(
 }
 
 pub fn set_room_avatar(
-    bk: &Backend,
-    baseu: Url,
-    tk: AccessToken,
+    base: Url,
+    access_token: AccessToken,
     room_id: RoomId,
     avatar: String,
 ) -> Result<(), Error> {
-    let roomurl = bk.url(
-        baseu.clone(),
-        &tk,
-        &format!("rooms/{}/state/m.room.avatar", room_id),
-        vec![],
-    )?;
-
-    let tx = bk.tx.clone();
-    thread::spawn(move || {
-        let query = upload_file(baseu, tk, &avatar).and_then(|response| {
-            let js = json!({ "url": response.content_uri.as_str() });
-
-            HTTP_CLIENT
-                .get_client()?
-                .put(roomurl)
-                .json(&js)
-                .send()
-                .map_err(Into::into)
-                .and(Ok(()))
-        });
+    let params = CreateStateEventsForKeyParameters {
+        access_token: access_token.clone(),
+    };
 
-        tx.send(BKResponse::SetRoomAvatar(query))
-            .expect_log("Connection closed");
-    });
+    upload_file(base.clone(), access_token, &avatar).and_then(|response| {
+        let body = json!({ "url": response.content_uri.as_str() });
+        let request = create_state_events_for_key(base, &params, &body, &room_id, "m.room.avatar")?;
+        let _ = HTTP_CLIENT.get_client()?.execute(request)?;
 
-    Ok(())
+        Ok(())
+    })
 }
 
 pub fn attach_file(


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