[fractal] API, room: use endpoint in set_room_name
- From: Daniel Garcia Moreno <danigm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal] API, room: use endpoint in set_room_name
- Date: Thu, 2 Apr 2020 10:39:05 +0000 (UTC)
commit d69e7b409a9d014aec9d6257bb9e7fd6ede740dc
Author: Alejandro DomÃnguez <adomu net-c com>
Date: Mon Mar 9 12:22:05 2020 +0100
API, room: use endpoint in set_room_name
fractal-matrix-api/src/backend/mod.rs | 7 ++--
fractal-matrix-api/src/backend/room.rs | 42 ++++++++--------------
fractal-matrix-api/src/r0/state.rs | 1 +
.../src/r0/state/create_state_events_for_key.rs | 31 ++++++++++++++++
4 files changed, 51 insertions(+), 30 deletions(-)
---
diff --git a/fractal-matrix-api/src/backend/mod.rs b/fractal-matrix-api/src/backend/mod.rs
index d2ab6090..45d1e091 100644
--- a/fractal-matrix-api/src/backend/mod.rs
+++ b/fractal-matrix-api/src/backend/mod.rs
@@ -306,8 +306,11 @@ impl Backend {
});
}
Ok(BKCommand::SetRoomName(server, access_token, room_id, name)) => {
- let r = room::set_room_name(self, server, access_token, room_id, name);
- bkerror2!(r, tx, BKResponse::SetRoomName);
+ thread::spawn(move || {
+ let query = room::set_room_name(server, access_token, room_id, name);
+ tx.send(BKResponse::SetRoomName(query))
+ .expect_log("Connection closed");
+ });
}
Ok(BKCommand::SetRoomTopic(server, access_token, room_id, topic)) => {
let r = room::set_room_topic(self, server, access_token, room_id, topic);
diff --git a/fractal-matrix-api/src/backend/room.rs b/fractal-matrix-api/src/backend/room.rs
index 498cc869..3e2e2a58 100644
--- a/fractal-matrix-api/src/backend/room.rs
+++ b/fractal-matrix-api/src/backend/room.rs
@@ -56,6 +56,8 @@ use crate::r0::redact::redact_event::request as redact_event;
use crate::r0::redact::redact_event::Body as RedactEventBody;
use crate::r0::redact::redact_event::Parameters as RedactEventParameters;
use crate::r0::redact::redact_event::Response as RedactEventResponse;
+use crate::r0::state::create_state_events_for_key::request as create_state_events_for_key;
+use crate::r0::state::create_state_events_for_key::Parameters as CreateStateEventsForKeyParameters;
use crate::r0::state::get_state_events_for_key::request as get_state_events_for_key;
use crate::r0::state::get_state_events_for_key::Parameters as GetStateEventsForKeyParameters;
use crate::r0::sync::get_joined_members::request as get_joined_members;
@@ -397,12 +399,10 @@ pub fn join_room(bk: &Backend, base: Url, access_token: AccessToken, room_id: Ro
let query = join_room_req(base, &room_id_or_alias_id, ¶ms)
.map_err(Into::into)
.and_then(|request| {
- HTTP_CLIENT
- .get_client()?
- .execute(request)
- .map_err(Into::into)
- })
- .and(Ok(()));
+ let _ = HTTP_CLIENT.get_client()?.execute(request)?;
+
+ Ok(())
+ });
if let Ok(_) = query {
data.lock().unwrap().join_to_room = Some(room_id);
@@ -448,38 +448,24 @@ pub fn mark_as_read(
}
pub fn set_room_name(
- bk: &Backend,
base: Url,
access_token: AccessToken,
room_id: RoomId,
name: String,
) -> Result<(), Error> {
- let url = bk.url(
- base,
- &access_token,
- &format!("rooms/{}/state/m.room.name", room_id),
- vec![],
- )?;
+ let params = CreateStateEventsForKeyParameters { access_token };
- let attrs = json!({
+ let body = json!({
"name": name,
});
- let tx = bk.tx.clone();
- put!(
- url,
- &attrs,
- |_| {
- tx.send(BKResponse::SetRoomName(Ok(())))
- .expect_log("Connection closed");
- },
- |err| {
- tx.send(BKResponse::SetRoomName(Err(err)))
- .expect_log("Connection closed");
- }
- );
+ create_state_events_for_key(base, ¶ms, &body, &room_id, "m.room.name")
+ .map_err(Into::into)
+ .and_then(|request| {
+ let _ = HTTP_CLIENT.get_client()?.execute(request)?;
- Ok(())
+ Ok(())
+ })
}
pub fn set_room_topic(
diff --git a/fractal-matrix-api/src/r0/state.rs b/fractal-matrix-api/src/r0/state.rs
index f46cf908..6904b95f 100644
--- a/fractal-matrix-api/src/r0/state.rs
+++ b/fractal-matrix-api/src/r0/state.rs
@@ -1 +1,2 @@
+pub mod create_state_events_for_key;
pub mod get_state_events_for_key;
diff --git a/fractal-matrix-api/src/r0/state/create_state_events_for_key.rs
b/fractal-matrix-api/src/r0/state/create_state_events_for_key.rs
new file mode 100644
index 00000000..37586882
--- /dev/null
+++ b/fractal-matrix-api/src/r0/state/create_state_events_for_key.rs
@@ -0,0 +1,31 @@
+use crate::r0::AccessToken;
+use reqwest::blocking::Client;
+use reqwest::blocking::Request;
+use reqwest::Error;
+use ruma_identifiers::RoomId;
+use serde::Serialize;
+use serde_json::Value as JsonValue;
+use url::Url;
+
+#[derive(Clone, Debug, Serialize)]
+pub struct Parameters {
+ pub access_token: AccessToken,
+}
+
+pub fn request(
+ base: Url,
+ params: &Parameters,
+ body: &JsonValue,
+ room_id: &RoomId,
+ // event_type: &EventType, TODO: Use this parameter
+ state_keys: &str,
+) -> Result<Request, Error> {
+ let url = base
+ .join(&format!(
+ "/_matrix/client/r0/rooms/{}/state/{}/",
+ room_id, state_keys,
+ ))
+ .expect("Malformed URL in get_state_events_for_key");
+
+ Client::new().put(url).query(params).json(body).build()
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]