Start work on message events
This commit is contained in:
		
							parent
							
								
									533260edd8
								
							
						
					
					
						commit
						b508b4d1e7
					
				
					 3 changed files with 25 additions and 27 deletions
				
			
		|  | @ -1,7 +1,8 @@ | ||||||
| use crate::utils; | use crate::utils; | ||||||
| use directories::ProjectDirs; | use directories::ProjectDirs; | ||||||
| use ruma_events::collections::all::RoomEvent; | use log::debug; | ||||||
| use ruma_identifiers::UserId; | use ruma_events::collections::all::Event; | ||||||
|  | use ruma_identifiers::{EventId, RoomId, UserId}; | ||||||
| use std::convert::TryInto; | use std::convert::TryInto; | ||||||
| 
 | 
 | ||||||
| const USERID_PASSWORD: &str = "userid_password"; | const USERID_PASSWORD: &str = "userid_password"; | ||||||
|  | @ -126,7 +127,8 @@ impl Data { | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     /// Create a new room event.
 |     /// Create a new room event.
 | ||||||
|     pub fn room_event_add(&self, _room_event: &RoomEvent) { |     pub fn event_add(&self, event: &Event, room_id: &RoomId, event_id: &EventId) { | ||||||
|  |         debug!("{}", serde_json::to_string(event).unwrap()); | ||||||
|         todo!(); |         todo!(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										31
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								src/main.rs
									
									
									
									
									
								
							|  | @ -14,7 +14,8 @@ use ruma_client_api::{ | ||||||
|     }, |     }, | ||||||
|     unversioned::get_supported_versions, |     unversioned::get_supported_versions, | ||||||
| }; | }; | ||||||
| use ruma_events::{room::message::MessageEvent, EventResult}; | use ruma_events::collections::all::Event; | ||||||
|  | use ruma_events::room::message::MessageEvent; | ||||||
| use ruma_identifiers::{EventId, UserId}; | use ruma_identifiers::{EventId, UserId}; | ||||||
| use ruma_wrapper::{MatrixResult, Ruma}; | use ruma_wrapper::{MatrixResult, Ruma}; | ||||||
| use serde_json::map::Map; | use serde_json::map::Map; | ||||||
|  | @ -213,31 +214,19 @@ 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> { | ||||||
|     // Check if content is valid
 |     // Generate event id
 | ||||||
|     let content = match body.data.clone() { |  | ||||||
|         EventResult::Ok(content) => content, |  | ||||||
|         EventResult::Err(_) => { |  | ||||||
|             debug!("No content."); |  | ||||||
|             return MatrixResult(Err(Error { |  | ||||||
|                 kind: ErrorKind::NotFound, |  | ||||||
|                 message: "No content.".to_owned(), |  | ||||||
|                 status_code: http::StatusCode::BAD_REQUEST, |  | ||||||
|             })); |  | ||||||
|         } |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     let event_id = EventId::try_from("$TODOrandomeventid:localhost").unwrap(); |     let event_id = EventId::try_from("$TODOrandomeventid:localhost").unwrap(); | ||||||
| 
 |     data.event_add( | ||||||
|     data.room_event_add( |         &Event::RoomMessage(MessageEvent { | ||||||
|         &MessageEvent { |             content: body.data.clone().into_result().unwrap(), | ||||||
|             content, |  | ||||||
|             event_id: event_id.clone(), |             event_id: event_id.clone(), | ||||||
|             origin_server_ts: utils::millis_since_unix_epoch(), |             origin_server_ts: utils::millis_since_unix_epoch(), | ||||||
|             room_id: Some(body.room_id.clone()), |             room_id: Some(body.room_id.clone()), | ||||||
|             sender: body.user_id.expect("user is authenticated"), |             sender: body.user_id.clone().expect("user is authenticated"), | ||||||
|             unsigned: Map::default(), |             unsigned: Map::default(), | ||||||
|         } |         }), | ||||||
|         .into(), |         &body.room_id, | ||||||
|  |         &event_id, | ||||||
|     ); |     ); | ||||||
| 
 | 
 | ||||||
|     MatrixResult(Ok(create_message_event::Response { event_id })) |     MatrixResult(Ok(create_message_event::Response { event_id })) | ||||||
|  |  | ||||||
|  | @ -26,6 +26,7 @@ const MESSAGE_LIMIT: u64 = 65535; | ||||||
| pub struct Ruma<T: Outgoing> { | pub struct Ruma<T: Outgoing> { | ||||||
|     body: T::Incoming, |     body: T::Incoming, | ||||||
|     pub user_id: Option<UserId>, |     pub user_id: Option<UserId>, | ||||||
|  |     pub json_body: serde_json::Value, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl<T: Endpoint> FromDataSimple for Ruma<T> | impl<T: Endpoint> FromDataSimple for Ruma<T> | ||||||
|  | @ -77,11 +78,17 @@ where | ||||||
|         let mut body = Vec::new(); |         let mut body = Vec::new(); | ||||||
|         handle.read_to_end(&mut body).unwrap(); |         handle.read_to_end(&mut body).unwrap(); | ||||||
| 
 | 
 | ||||||
|         let http_request = http_request.body(body).unwrap(); |         let http_request = http_request.body(body.clone()).unwrap(); | ||||||
| 
 |  | ||||||
|         log::info!("{:?}", http_request); |         log::info!("{:?}", http_request); | ||||||
|  | 
 | ||||||
|         match T::Incoming::try_from(http_request) { |         match T::Incoming::try_from(http_request) { | ||||||
|             Ok(t) => Success(Ruma { body: t, user_id }), |             Ok(t) => Success(Ruma { | ||||||
|  |                 body: t, | ||||||
|  |                 user_id, | ||||||
|  |                 // TODO: Can we avoid parsing it again?
 | ||||||
|  |                 json_body: serde_json::from_slice(&body) | ||||||
|  |                     .expect("Ruma already parsed it successfuly"), | ||||||
|  |             }), | ||||||
|             Err(e) => { |             Err(e) => { | ||||||
|                 log::error!("{:?}", e); |                 log::error!("{:?}", e); | ||||||
|                 Failure((Status::InternalServerError, ())) |                 Failure((Status::InternalServerError, ())) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue