ruma_federation_api/membership/
prepare_join_event.rs1pub mod v1 {
6 use ruma_common::{
11 api::{request, response, Metadata},
12 metadata, OwnedRoomId, OwnedUserId, RoomVersionId,
13 };
14 use serde_json::value::RawValue as RawJsonValue;
15
16 const METADATA: Metadata = metadata! {
17 method: GET,
18 rate_limited: false,
19 authentication: ServerSignatures,
20 history: {
21 1.0 => "/_matrix/federation/v1/make_join/:room_id/:user_id",
22 }
23 };
24
25 #[request]
27 pub struct Request {
28 #[ruma_api(path)]
30 pub room_id: OwnedRoomId,
31
32 #[ruma_api(path)]
34 pub user_id: OwnedUserId,
35
36 #[ruma_api(query)]
40 #[serde(default = "default_ver", skip_serializing_if = "is_default_ver")]
41 pub ver: Vec<RoomVersionId>,
42 }
43
44 #[response]
46 pub struct Response {
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub room_version: Option<RoomVersionId>,
50
51 pub event: Box<RawJsonValue>,
53 }
54
55 fn default_ver() -> Vec<RoomVersionId> {
56 vec![RoomVersionId::V1]
57 }
58
59 fn is_default_ver(ver: &[RoomVersionId]) -> bool {
60 *ver == [RoomVersionId::V1]
61 }
62
63 impl Request {
64 pub fn new(room_id: OwnedRoomId, user_id: OwnedUserId) -> Self {
66 Self { room_id, user_id, ver: vec![RoomVersionId::V1] }
67 }
68 }
69
70 impl Response {
71 pub fn new(event: Box<RawJsonValue>) -> Self {
73 Self { room_version: None, event }
74 }
75 }
76}