|
|
@ -158,7 +158,6 @@ pub fn register_route(
|
|
|
|
// Generate new device id if the user didn't specify one
|
|
|
|
// Generate new device id if the user didn't specify one
|
|
|
|
let device_id = body
|
|
|
|
let device_id = body
|
|
|
|
.device_id
|
|
|
|
.device_id
|
|
|
|
.clone()
|
|
|
|
|
|
|
|
.unwrap_or_else(|| utils::random_string(DEVICE_ID_LENGTH));
|
|
|
|
.unwrap_or_else(|| utils::random_string(DEVICE_ID_LENGTH));
|
|
|
|
|
|
|
|
|
|
|
|
// Generate new token for the device
|
|
|
|
// Generate new token for the device
|
|
|
@ -276,7 +275,6 @@ pub fn login_route(
|
|
|
|
// Generate new device id if the user didn't specify one
|
|
|
|
// Generate new device id if the user didn't specify one
|
|
|
|
let device_id = body
|
|
|
|
let device_id = body
|
|
|
|
.device_id
|
|
|
|
.device_id
|
|
|
|
.clone()
|
|
|
|
|
|
|
|
.unwrap_or_else(|| utils::random_string(DEVICE_ID_LENGTH));
|
|
|
|
.unwrap_or_else(|| utils::random_string(DEVICE_ID_LENGTH));
|
|
|
|
|
|
|
|
|
|
|
|
// Generate a new token for the device
|
|
|
|
// Generate a new token for the device
|
|
|
@ -347,7 +345,7 @@ pub fn set_pushrule_route(
|
|
|
|
_rule_id: String,
|
|
|
|
_rule_id: String,
|
|
|
|
) -> MatrixResult<set_pushrule::Response> {
|
|
|
|
) -> MatrixResult<set_pushrule::Response> {
|
|
|
|
// TODO
|
|
|
|
// TODO
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
db.account_data
|
|
|
|
db.account_data
|
|
|
|
.update(
|
|
|
|
.update(
|
|
|
|
None,
|
|
|
|
None,
|
|
|
@ -448,7 +446,7 @@ pub fn set_displayname_route(
|
|
|
|
body: Ruma<set_display_name::Request>,
|
|
|
|
body: Ruma<set_display_name::Request>,
|
|
|
|
_user_id: String,
|
|
|
|
_user_id: String,
|
|
|
|
) -> MatrixResult<set_display_name::Response> {
|
|
|
|
) -> MatrixResult<set_display_name::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
if let Some(displayname) = &body.displayname {
|
|
|
|
if let Some(displayname) = &body.displayname {
|
|
|
|
// Some("") will clear the displayname
|
|
|
|
// Some("") will clear the displayname
|
|
|
@ -539,7 +537,7 @@ pub fn set_avatar_url_route(
|
|
|
|
body: Ruma<set_avatar_url::Request>,
|
|
|
|
body: Ruma<set_avatar_url::Request>,
|
|
|
|
_user_id: String,
|
|
|
|
_user_id: String,
|
|
|
|
) -> MatrixResult<set_avatar_url::Response> {
|
|
|
|
) -> MatrixResult<set_avatar_url::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
if !body.avatar_url.starts_with("mxc://") {
|
|
|
|
if !body.avatar_url.starts_with("mxc://") {
|
|
|
|
debug!("Request contains an invalid avatar_url.");
|
|
|
|
debug!("Request contains an invalid avatar_url.");
|
|
|
@ -624,7 +622,7 @@ pub fn set_presence_route(
|
|
|
|
body: Ruma<set_presence::Request>,
|
|
|
|
body: Ruma<set_presence::Request>,
|
|
|
|
_user_id: String,
|
|
|
|
_user_id: String,
|
|
|
|
) -> MatrixResult<set_presence::Response> {
|
|
|
|
) -> MatrixResult<set_presence::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
db.global_edus
|
|
|
|
db.global_edus
|
|
|
|
.update_globallatest(
|
|
|
|
.update_globallatest(
|
|
|
@ -670,7 +668,7 @@ pub fn set_read_marker_route(
|
|
|
|
body: Ruma<set_read_marker::Request>,
|
|
|
|
body: Ruma<set_read_marker::Request>,
|
|
|
|
_room_id: String,
|
|
|
|
_room_id: String,
|
|
|
|
) -> MatrixResult<set_read_marker::Response> {
|
|
|
|
) -> MatrixResult<set_read_marker::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
db.account_data
|
|
|
|
db.account_data
|
|
|
|
.update(
|
|
|
|
.update(
|
|
|
|
Some(&body.room_id),
|
|
|
|
Some(&body.room_id),
|
|
|
@ -739,7 +737,7 @@ pub fn create_typing_event_route(
|
|
|
|
_room_id: String,
|
|
|
|
_room_id: String,
|
|
|
|
_user_id: String,
|
|
|
|
_user_id: String,
|
|
|
|
) -> MatrixResult<create_typing_event::Response> {
|
|
|
|
) -> MatrixResult<create_typing_event::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
let edu = EduEvent::Typing(ruma_events::typing::TypingEvent {
|
|
|
|
let edu = EduEvent::Typing(ruma_events::typing::TypingEvent {
|
|
|
|
content: ruma_events::typing::TypingEventContent {
|
|
|
|
content: ruma_events::typing::TypingEventContent {
|
|
|
|
user_ids: vec![user_id.clone()],
|
|
|
|
user_ids: vec![user_id.clone()],
|
|
|
@ -772,7 +770,7 @@ pub fn create_room_route(
|
|
|
|
) -> MatrixResult<create_room::Response> {
|
|
|
|
) -> MatrixResult<create_room::Response> {
|
|
|
|
// TODO: check if room is unique
|
|
|
|
// TODO: check if room is unique
|
|
|
|
let room_id = RoomId::try_from(db.globals.hostname()).expect("host is valid");
|
|
|
|
let room_id = RoomId::try_from(db.globals.hostname()).expect("host is valid");
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
db.rooms
|
|
|
|
db.rooms
|
|
|
|
.append_pdu(
|
|
|
|
.append_pdu(
|
|
|
@ -890,7 +888,7 @@ pub fn join_room_by_id_route(
|
|
|
|
body: Ruma<join_room_by_id::Request>,
|
|
|
|
body: Ruma<join_room_by_id::Request>,
|
|
|
|
_room_id: String,
|
|
|
|
_room_id: String,
|
|
|
|
) -> MatrixResult<join_room_by_id::Response> {
|
|
|
|
) -> MatrixResult<join_room_by_id::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
if db
|
|
|
|
if db
|
|
|
|
.rooms
|
|
|
|
.rooms
|
|
|
@ -920,7 +918,7 @@ pub fn join_room_by_id_or_alias_route(
|
|
|
|
body: Ruma<join_room_by_id_or_alias::Request>,
|
|
|
|
body: Ruma<join_room_by_id_or_alias::Request>,
|
|
|
|
_room_id_or_alias: String,
|
|
|
|
_room_id_or_alias: String,
|
|
|
|
) -> MatrixResult<join_room_by_id_or_alias::Response> {
|
|
|
|
) -> MatrixResult<join_room_by_id_or_alias::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
let room_id = match RoomId::try_from(body.room_id_or_alias.clone()) {
|
|
|
|
let room_id = match RoomId::try_from(body.room_id_or_alias.clone()) {
|
|
|
|
Ok(room_id) => room_id,
|
|
|
|
Ok(room_id) => room_id,
|
|
|
@ -965,7 +963,7 @@ pub fn leave_room_route(
|
|
|
|
body: Ruma<leave_room::Request>,
|
|
|
|
body: Ruma<leave_room::Request>,
|
|
|
|
_room_id: String,
|
|
|
|
_room_id: String,
|
|
|
|
) -> MatrixResult<leave_room::Response> {
|
|
|
|
) -> MatrixResult<leave_room::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
db.rooms
|
|
|
|
db.rooms
|
|
|
|
.leave(&user_id, &body.room_id, &user_id, &db.globals)
|
|
|
|
.leave(&user_id, &body.room_id, &user_id, &db.globals)
|
|
|
|
.unwrap();
|
|
|
|
.unwrap();
|
|
|
@ -978,7 +976,7 @@ pub fn forget_room_route(
|
|
|
|
body: Ruma<forget_room::Request>,
|
|
|
|
body: Ruma<forget_room::Request>,
|
|
|
|
_room_id: String,
|
|
|
|
_room_id: String,
|
|
|
|
) -> MatrixResult<forget_room::Response> {
|
|
|
|
) -> MatrixResult<forget_room::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
db.rooms.forget(&body.room_id, &user_id).unwrap();
|
|
|
|
db.rooms.forget(&body.room_id, &user_id).unwrap();
|
|
|
|
MatrixResult(Ok(forget_room::Response))
|
|
|
|
MatrixResult(Ok(forget_room::Response))
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1112,7 +1110,7 @@ pub fn create_message_event_route(
|
|
|
|
_txn_id: String,
|
|
|
|
_txn_id: String,
|
|
|
|
body: Ruma<create_message_event::Request>,
|
|
|
|
body: Ruma<create_message_event::Request>,
|
|
|
|
) -> MatrixResult<create_message_event::Response> {
|
|
|
|
) -> MatrixResult<create_message_event::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
let mut unsigned = serde_json::Map::new();
|
|
|
|
let mut unsigned = serde_json::Map::new();
|
|
|
|
unsigned.insert("transaction_id".to_owned(), body.txn_id.clone().into());
|
|
|
|
unsigned.insert("transaction_id".to_owned(), body.txn_id.clone().into());
|
|
|
@ -1146,14 +1144,14 @@ pub fn create_state_event_for_key_route(
|
|
|
|
_state_key: String,
|
|
|
|
_state_key: String,
|
|
|
|
body: Ruma<create_state_event_for_key::Request>,
|
|
|
|
body: Ruma<create_state_event_for_key::Request>,
|
|
|
|
) -> MatrixResult<create_state_event_for_key::Response> {
|
|
|
|
) -> MatrixResult<create_state_event_for_key::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
// Reponse of with/without key is the same
|
|
|
|
// Reponse of with/without key is the same
|
|
|
|
let event_id = db
|
|
|
|
let event_id = db
|
|
|
|
.rooms
|
|
|
|
.rooms
|
|
|
|
.append_pdu(
|
|
|
|
.append_pdu(
|
|
|
|
body.room_id.clone(),
|
|
|
|
body.room_id.clone(),
|
|
|
|
user_id,
|
|
|
|
user_id.clone(),
|
|
|
|
body.event_type.clone(),
|
|
|
|
body.event_type.clone(),
|
|
|
|
body.json_body.clone(),
|
|
|
|
body.json_body.clone(),
|
|
|
|
None,
|
|
|
|
None,
|
|
|
@ -1177,14 +1175,14 @@ pub fn create_state_event_for_empty_key_route(
|
|
|
|
_event_type: String,
|
|
|
|
_event_type: String,
|
|
|
|
body: Ruma<create_state_event_for_empty_key::Request>,
|
|
|
|
body: Ruma<create_state_event_for_empty_key::Request>,
|
|
|
|
) -> MatrixResult<create_state_event_for_empty_key::Response> {
|
|
|
|
) -> MatrixResult<create_state_event_for_empty_key::Response> {
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
|
|
|
|
|
|
|
|
// Reponse of with/without key is the same
|
|
|
|
// Reponse of with/without key is the same
|
|
|
|
let event_id = db
|
|
|
|
let event_id = db
|
|
|
|
.rooms
|
|
|
|
.rooms
|
|
|
|
.append_pdu(
|
|
|
|
.append_pdu(
|
|
|
|
body.room_id.clone(),
|
|
|
|
body.room_id.clone(),
|
|
|
|
user_id,
|
|
|
|
user_id.clone(),
|
|
|
|
body.event_type.clone(),
|
|
|
|
body.event_type.clone(),
|
|
|
|
body.json_body.clone(),
|
|
|
|
body.json_body.clone(),
|
|
|
|
None,
|
|
|
|
None,
|
|
|
@ -1204,7 +1202,7 @@ pub fn sync_route(
|
|
|
|
body: Ruma<sync_events::Request>,
|
|
|
|
body: Ruma<sync_events::Request>,
|
|
|
|
) -> MatrixResult<sync_events::Response> {
|
|
|
|
) -> MatrixResult<sync_events::Response> {
|
|
|
|
std::thread::sleep(Duration::from_millis(1500));
|
|
|
|
std::thread::sleep(Duration::from_millis(1500));
|
|
|
|
let user_id = body.user_id.clone().expect("user is authenticated");
|
|
|
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
|
|
|
let next_batch = db.globals.current_count().unwrap().to_string();
|
|
|
|
let next_batch = db.globals.current_count().unwrap().to_string();
|
|
|
|
|
|
|
|
|
|
|
|
let mut joined_rooms = BTreeMap::new();
|
|
|
|
let mut joined_rooms = BTreeMap::new();
|
|
|
@ -1344,10 +1342,7 @@ pub fn sync_route(
|
|
|
|
for room_id in db.rooms.rooms_left(&user_id) {
|
|
|
|
for room_id in db.rooms.rooms_left(&user_id) {
|
|
|
|
let room_id = room_id.unwrap();
|
|
|
|
let room_id = room_id.unwrap();
|
|
|
|
let pdus = db.rooms.pdus_since(&room_id, since).unwrap();
|
|
|
|
let pdus = db.rooms.pdus_since(&room_id, since).unwrap();
|
|
|
|
let room_events = pdus
|
|
|
|
let room_events = pdus.map(|pdu| pdu.unwrap().to_room_event()).collect();
|
|
|
|
.into_iter()
|
|
|
|
|
|
|
|
.map(|pdu| pdu.unwrap().to_room_event())
|
|
|
|
|
|
|
|
.collect();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let mut edus = db
|
|
|
|
let mut edus = db
|
|
|
|
.rooms
|
|
|
|
.rooms
|
|
|
@ -1380,7 +1375,6 @@ pub fn sync_route(
|
|
|
|
.rooms
|
|
|
|
.rooms
|
|
|
|
.pdus_since(&room_id, since)
|
|
|
|
.pdus_since(&room_id, since)
|
|
|
|
.unwrap()
|
|
|
|
.unwrap()
|
|
|
|
.into_iter()
|
|
|
|
|
|
|
|
.map(|pdu| pdu.unwrap().to_stripped_state_event())
|
|
|
|
.map(|pdu| pdu.unwrap().to_stripped_state_event())
|
|
|
|
.collect();
|
|
|
|
.collect();
|
|
|
|
|
|
|
|
|
|
|
|