[fractal] api: Fix publicRooms request



commit 17aca318445a201c547d86d09919d26b6379ecae
Author: Christopher Davis <brainblasted disroot org>
Date:   Mon Apr 29 15:00:55 2019 -0400

    api: Fix publicRooms request
    
    Previously we passed a String as "filter" in our
    PublicRoomsRequest, but we needed to be passing
    a Filter object. Somewhere along the way the String
    stopped being accepted, breaking search.
    
    Fixes https://gitlab.gnome.org/GNOME/fractal/issues/451

 fractal-matrix-api/src/backend/directory.rs | 7 +++++--
 fractal-matrix-api/src/model/room.rs        | 9 ++++++---
 fractal-matrix-api/src/types.rs             | 1 +
 3 files changed, 12 insertions(+), 5 deletions(-)
---
diff --git a/fractal-matrix-api/src/backend/directory.rs b/fractal-matrix-api/src/backend/directory.rs
index e6501c14..99ce826e 100644
--- a/fractal-matrix-api/src/backend/directory.rs
+++ b/fractal-matrix-api/src/backend/directory.rs
@@ -13,6 +13,7 @@ use crate::util::cache_path;
 use crate::util::json_q;
 use crate::util::media;
 
+use crate::types::PublicRoomsFilter;
 use crate::types::PublicRoomsRequest;
 use crate::types::PublicRoomsResponse;
 use crate::types::Room;
@@ -53,7 +54,7 @@ pub fn protocols(bk: &Backend) {
 pub fn room_search(
     bk: &Backend,
     homeserver: Option<String>,
-    filter: Option<String>,
+    generic_search_term: Option<String>,
     third_party: Option<String>,
     more: bool,
 ) -> Result<(), Error> {
@@ -79,7 +80,9 @@ pub fn room_search(
 
     let request = PublicRoomsRequest {
         limit: Some(globals::ROOM_DIRECTORY_LIMIT),
-        filter,
+        filter: Some(PublicRoomsFilter {
+            generic_search_term,
+        }),
         since,
         third_party_networks: third_party
             .map(|tp| ThirdPartyNetworks::Only(tp))
diff --git a/fractal-matrix-api/src/model/room.rs b/fractal-matrix-api/src/model/room.rs
index 594368d7..9055be5a 100644
--- a/fractal-matrix-api/src/model/room.rs
+++ b/fractal-matrix-api/src/model/room.rs
@@ -270,14 +270,17 @@ pub struct PublicRoomsRequest {
     pub limit: Option<i32>,
     #[serde(skip_serializing_if = "Option::is_none")]
     pub since: Option<String>,
-    // This field doesn't follow the spec but for some reason
-    // it fails with matrix.org if it's not set this way
     #[serde(skip_serializing_if = "Option::is_none")]
-    pub filter: Option<String>,
+    pub filter: Option<PublicRoomsFilter>,
     #[serde(flatten)]
     pub third_party_networks: ThirdPartyNetworks,
 }
 
+#[derive(Clone, Debug, Serialize)]
+pub struct PublicRoomsFilter {
+    pub generic_search_term: Option<String>,
+}
+
 #[derive(Clone, Debug, Serialize)]
 #[serde(tag = "include_all_networks", content = "third_party_instance_id")]
 pub enum ThirdPartyNetworks {
diff --git a/fractal-matrix-api/src/types.rs b/fractal-matrix-api/src/types.rs
index 3742967d..482a7b9f 100644
--- a/fractal-matrix-api/src/types.rs
+++ b/fractal-matrix-api/src/types.rs
@@ -11,6 +11,7 @@ pub use crate::model::message::Message;
 pub use crate::model::protocol::ProtocolInstance;
 pub use crate::model::protocol::SupportedProtocols;
 pub use crate::model::register::*;
+pub use crate::model::room::PublicRoomsFilter;
 pub use crate::model::room::PublicRoomsRequest;
 pub use crate::model::room::PublicRoomsResponse;
 pub use crate::model::room::Room;


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