feat: implement /event (#144)
Merge branch 'master' into event-route Event: Implement /event Co-authored-by: the0 <theo@localhost> Reviewed-on: https://git.koesters.xyz/timo/conduit/pulls/144 Reviewed-by: Timo Kösters <timo@koesters.xyz>next
parent
b03d030b71
commit
469071e105
|
@ -44,7 +44,7 @@ use ruma::{
|
||||||
push::{get_pushers, get_pushrules_all, set_pushrule, set_pushrule_enabled},
|
push::{get_pushers, get_pushrules_all, set_pushrule, set_pushrule_enabled},
|
||||||
read_marker::set_read_marker,
|
read_marker::set_read_marker,
|
||||||
redact::redact_event,
|
redact::redact_event,
|
||||||
room::{self, create_room},
|
room::{self, create_room, get_room_event},
|
||||||
session::{get_login_types, login, logout, logout_all},
|
session::{get_login_types, login, logout, logout_all},
|
||||||
state::{
|
state::{
|
||||||
create_state_event_for_empty_key, create_state_event_for_key, get_state_events,
|
create_state_event_for_empty_key, create_state_event_for_key, get_state_events,
|
||||||
|
@ -2059,6 +2059,35 @@ pub fn get_protocols_route() -> ConduitResult<get_protocols::Response> {
|
||||||
.into())
|
.into())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[get(
|
||||||
|
"/_matrix/client/r0/rooms/<_room_id>/event/<_event_id>",
|
||||||
|
data = "<body>"
|
||||||
|
)]
|
||||||
|
pub fn get_room_event_route(
|
||||||
|
db: State<'_, Database>,
|
||||||
|
body: Ruma<get_room_event::Request>,
|
||||||
|
_room_id: String,
|
||||||
|
_event_id: String,
|
||||||
|
) -> ConduitResult<get_room_event::Response> {
|
||||||
|
let user_id = body.user_id.as_ref().expect("user is authenticated");
|
||||||
|
|
||||||
|
if !db.rooms.is_joined(user_id, &body.room_id)? {
|
||||||
|
return Err(Error::BadRequest(
|
||||||
|
ErrorKind::Forbidden,
|
||||||
|
"You don't have permission to view this room.",
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(get_room_event::Response {
|
||||||
|
event: db
|
||||||
|
.rooms
|
||||||
|
.get_pdu(&body.event_id)?
|
||||||
|
.ok_or(Error::BadRequest(ErrorKind::NotFound, "Event not found."))?
|
||||||
|
.to_room_event(),
|
||||||
|
}
|
||||||
|
.into())
|
||||||
|
}
|
||||||
|
|
||||||
#[put(
|
#[put(
|
||||||
"/_matrix/client/r0/rooms/<_room_id>/send/<_event_type>/<_txn_id>",
|
"/_matrix/client/r0/rooms/<_room_id>/send/<_event_type>/<_txn_id>",
|
||||||
data = "<body>"
|
data = "<body>"
|
||||||
|
|
|
@ -36,6 +36,7 @@ fn setup_rocket() -> rocket::Rocket {
|
||||||
client_server::get_pushrules_all_route,
|
client_server::get_pushrules_all_route,
|
||||||
client_server::set_pushrule_route,
|
client_server::set_pushrule_route,
|
||||||
client_server::set_pushrule_enabled_route,
|
client_server::set_pushrule_enabled_route,
|
||||||
|
client_server::get_room_event_route,
|
||||||
client_server::get_filter_route,
|
client_server::get_filter_route,
|
||||||
client_server::create_filter_route,
|
client_server::create_filter_route,
|
||||||
client_server::set_global_account_data_route,
|
client_server::set_global_account_data_route,
|
||||||
|
|
Loading…
Reference in New Issue