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>
This commit is contained in:
		
							parent
							
								
									b03d030b71
								
							
						
					
					
						commit
						469071e105
					
				
					 2 changed files with 31 additions and 1 deletions
				
			
		|  | @ -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 a new issue