[fractal] API, room: use endpoint in set_language
- From: Daniel Garcia Moreno <danigm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [fractal] API, room: use endpoint in set_language
- Date: Thu, 2 Apr 2020 10:39:31 +0000 (UTC)
commit 0b11686572d5720109649cd9780b7685921649bc
Author: Alejandro DomÃnguez <adomu net-c com>
Date: Tue Mar 10 04:16:51 2020 +0100
API, room: use endpoint in set_language
fractal-matrix-api/src/backend/mod.rs | 7 +++-
fractal-matrix-api/src/backend/room.rs | 49 ++++++++++++----------
fractal-matrix-api/src/r0/config.rs | 1 +
.../src/r0/config/set_room_account_data.rs | 31 ++++++++++++++
4 files changed, 65 insertions(+), 23 deletions(-)
---
diff --git a/fractal-matrix-api/src/backend/mod.rs b/fractal-matrix-api/src/backend/mod.rs
index 213127e0..b3f8bc4f 100644
--- a/fractal-matrix-api/src/backend/mod.rs
+++ b/fractal-matrix-api/src/backend/mod.rs
@@ -373,8 +373,11 @@ impl Backend {
});
}
Ok(BKCommand::ChangeLanguage(access_token, server, uid, room_id, lang)) => {
- let r = room::set_language(self, access_token, server, uid, room_id, lang);
- bkerror2!(r, tx, BKResponse::ChangeLanguage);
+ thread::spawn(move || {
+ let query = room::set_language(access_token, server, uid, room_id, lang);
+ tx.send(BKResponse::ChangeLanguage(query))
+ .expect_log("Connection closed");
+ });
}
// Media module
diff --git a/fractal-matrix-api/src/backend/room.rs b/fractal-matrix-api/src/backend/room.rs
index a429dd60..22c025a6 100644
--- a/fractal-matrix-api/src/backend/room.rs
+++ b/fractal-matrix-api/src/backend/room.rs
@@ -17,7 +17,6 @@ use std::thread;
use crate::util::cache_dir_path;
use crate::util::dw_media;
use crate::util::get_prev_batch_from;
-use crate::util::json_q;
use crate::util::ContentType;
use crate::util::ResultExpectLog;
use crate::util::HTTP_CLIENT;
@@ -32,6 +31,8 @@ use crate::r0::config::get_global_account_data::request as get_global_account_da
use crate::r0::config::get_global_account_data::Parameters as GetGlobalAccountDataParameters;
use crate::r0::config::set_global_account_data::request as set_global_account_data;
use crate::r0::config::set_global_account_data::Parameters as SetGlobalAccountDataParameters;
+use crate::r0::config::set_room_account_data::request as set_room_account_data;
+use crate::r0::config::set_room_account_data::Parameters as SetRoomAccountDataParameters;
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;
@@ -798,39 +799,45 @@ pub fn invite(
invite_user(base, &room_id, ¶ms, &body)
.map_err(Into::into)
.and_then(|request| {
- HTTP_CLIENT
- .get_client()?
- .execute(request)
- .map_err(Into::into)
+ let _ = HTTP_CLIENT.get_client()?.execute(request)?;
+
+ Ok(())
})
- .and(Ok(()))
}
pub fn set_language(
- bk: &Backend,
access_token: AccessToken,
- server: Url,
+ base: Url,
user_id: UserId,
room_id: RoomId,
input_language: String,
) -> Result<(), Error> {
- let url = bk.url(
- server,
- &access_token,
- &format!(
- "user/{}/rooms/{}/account_data/org.gnome.fractal.language",
- user_id, room_id,
- ),
- vec![],
- )?;
+ let params = SetRoomAccountDataParameters { access_token };
+
let body = json!(Language { input_language });
+ let response = set_room_account_data(
+ base,
+ ¶ms,
+ &body,
+ &user_id,
+ &room_id,
+ "org.gnome.fractal.language",
+ )
+ .map_err(Into::into)
+ .and_then(|request| {
+ let _ = HTTP_CLIENT.get_client()?.execute(request)?;
+
+ Ok(())
+ });
+
// FIXME: Manage errors in the AppOp loop
- put!(url, &body, |_| {}, |err| {
+ if let Err(ref err) = response {
error!(
"Matrix failed to set room language with error code: {:?}",
err
- )
- });
- Ok(())
+ );
+ }
+
+ response
}
diff --git a/fractal-matrix-api/src/r0/config.rs b/fractal-matrix-api/src/r0/config.rs
index c1728c65..62850769 100644
--- a/fractal-matrix-api/src/r0/config.rs
+++ b/fractal-matrix-api/src/r0/config.rs
@@ -1,2 +1,3 @@
pub mod get_global_account_data;
pub mod set_global_account_data;
+pub mod set_room_account_data;
diff --git a/fractal-matrix-api/src/r0/config/set_room_account_data.rs
b/fractal-matrix-api/src/r0/config/set_room_account_data.rs
new file mode 100644
index 00000000..7ee74db1
--- /dev/null
+++ b/fractal-matrix-api/src/r0/config/set_room_account_data.rs
@@ -0,0 +1,31 @@
+use crate::r0::AccessToken;
+use reqwest::blocking::Client;
+use reqwest::blocking::Request;
+use reqwest::Error;
+use ruma_identifiers::{RoomId, UserId};
+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,
+ user_id: &UserId,
+ room_id: &RoomId,
+ event_type: &str, // TODO: Use EventType
+) -> Result<Request, Error> {
+ let url = base
+ .join(&format!(
+ "/_matrix/client/r0/user/{}/rooms/{}/account_data/{}",
+ user_id, room_id, event_type,
+ ))
+ .expect("Malformed URL in set_room_account_data");
+
+ Client::new().put(url).query(params).json(body).build()
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]