Start work on event creation

next
timokoesters 2020-03-29 13:48:44 +02:00
parent 744e0adfcf
commit 73e04e71d7
No known key found for this signature in database
GPG Key ID: 24DA7517711A2BA4
5 changed files with 36 additions and 3 deletions

2
Cargo.lock generated
View File

@ -489,11 +489,13 @@ version = "0.1.0"
dependencies = [
"directories",
"http",
"js_int",
"log 0.4.8",
"pretty_env_logger",
"rocket",
"ruma-api",
"ruma-client-api",
"ruma-events",
"ruma-identifiers",
"sled",
]

View File

@ -16,3 +16,5 @@ sled = "0.31.0"
directories = "2.0.2"
ruma-identifiers = "0.14.1"
ruma-api = "0.15.0-dev.1"
ruma-events = "0.17.0"
js_int = "0.1.3"

View File

@ -1,4 +1,5 @@
use directories::ProjectDirs;
use ruma_events::collections::all::RoomEvent;
use ruma_identifiers::UserId;
pub struct Data(sled::Db);
@ -36,4 +37,6 @@ impl Data {
.insert(user_id.to_string(), &*password.unwrap_or_default())
.unwrap();
}
pub fn room_event_add(&self, room_event: &RoomEvent) {}
}

View File

@ -1,6 +1,7 @@
#![feature(proc_macro_hygiene, decl_macro)]
mod data;
mod ruma_wrapper;
mod utils;
pub use data::Data;
use log::debug;
@ -13,8 +14,10 @@ use ruma_client_api::{
},
unversioned::get_supported_versions,
};
use ruma_identifiers::UserId;
use ruma_events::room::message::MessageEvent;
use ruma_identifiers::{EventId, UserId};
use ruma_wrapper::{MatrixResult, Ruma};
use std::convert::TryFrom;
use std::{collections::HashMap, convert::TryInto};
#[get("/_matrix/client/versions")]
@ -153,14 +156,28 @@ fn join_room_by_id_route(
data = "<body>"
)]
fn create_message_event_route(
data: State<Data>,
_room_id: String,
_event_type: String,
_txn_id: String,
body: Ruma<create_message_event::IncomingRequest>,
) -> MatrixResult<create_message_event::Response> {
dbg!(body);
dbg!(&body);
if let Ok(content) = body.data.clone().into_result() {
data.room_event_add(
&MessageEvent {
content,
event_id: EventId::try_from("$randomeventid:localhost").unwrap(),
origin_server_ts: utils::millis_since_unix_epoch(),
room_id: Some(body.room_id.clone()),
sender: UserId::try_from("@TODO:localhost").unwrap(),
unsigned: None,
}
.into(),
);
}
MatrixResult(Ok(create_message_event::Response {
event_id: "$randomeventid".try_into().unwrap(),
event_id: "$randomeventid:localhost".try_into().unwrap(),
}))
}

9
src/utils.rs Normal file
View File

@ -0,0 +1,9 @@
use std::time::{SystemTime, UNIX_EPOCH};
pub fn millis_since_unix_epoch() -> js_int::UInt {
(SystemTime::now()
.duration_since(UNIX_EPOCH)
.unwrap()
.as_millis() as u32)
.into()
}