Start work on event creation
This commit is contained in:
parent
744e0adfcf
commit
73e04e71d7
5 changed files with 36 additions and 3 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -489,11 +489,13 @@ version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"directories",
|
"directories",
|
||||||
"http",
|
"http",
|
||||||
|
"js_int",
|
||||||
"log 0.4.8",
|
"log 0.4.8",
|
||||||
"pretty_env_logger",
|
"pretty_env_logger",
|
||||||
"rocket",
|
"rocket",
|
||||||
"ruma-api",
|
"ruma-api",
|
||||||
"ruma-client-api",
|
"ruma-client-api",
|
||||||
|
"ruma-events",
|
||||||
"ruma-identifiers",
|
"ruma-identifiers",
|
||||||
"sled",
|
"sled",
|
||||||
]
|
]
|
||||||
|
|
|
@ -16,3 +16,5 @@ sled = "0.31.0"
|
||||||
directories = "2.0.2"
|
directories = "2.0.2"
|
||||||
ruma-identifiers = "0.14.1"
|
ruma-identifiers = "0.14.1"
|
||||||
ruma-api = "0.15.0-dev.1"
|
ruma-api = "0.15.0-dev.1"
|
||||||
|
ruma-events = "0.17.0"
|
||||||
|
js_int = "0.1.3"
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
use directories::ProjectDirs;
|
use directories::ProjectDirs;
|
||||||
|
use ruma_events::collections::all::RoomEvent;
|
||||||
use ruma_identifiers::UserId;
|
use ruma_identifiers::UserId;
|
||||||
|
|
||||||
pub struct Data(sled::Db);
|
pub struct Data(sled::Db);
|
||||||
|
@ -36,4 +37,6 @@ impl Data {
|
||||||
.insert(user_id.to_string(), &*password.unwrap_or_default())
|
.insert(user_id.to_string(), &*password.unwrap_or_default())
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn room_event_add(&self, room_event: &RoomEvent) {}
|
||||||
}
|
}
|
||||||
|
|
23
src/main.rs
23
src/main.rs
|
@ -1,6 +1,7 @@
|
||||||
#![feature(proc_macro_hygiene, decl_macro)]
|
#![feature(proc_macro_hygiene, decl_macro)]
|
||||||
mod data;
|
mod data;
|
||||||
mod ruma_wrapper;
|
mod ruma_wrapper;
|
||||||
|
mod utils;
|
||||||
|
|
||||||
pub use data::Data;
|
pub use data::Data;
|
||||||
use log::debug;
|
use log::debug;
|
||||||
|
@ -13,8 +14,10 @@ use ruma_client_api::{
|
||||||
},
|
},
|
||||||
unversioned::get_supported_versions,
|
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 ruma_wrapper::{MatrixResult, Ruma};
|
||||||
|
use std::convert::TryFrom;
|
||||||
use std::{collections::HashMap, convert::TryInto};
|
use std::{collections::HashMap, convert::TryInto};
|
||||||
|
|
||||||
#[get("/_matrix/client/versions")]
|
#[get("/_matrix/client/versions")]
|
||||||
|
@ -153,14 +156,28 @@ fn join_room_by_id_route(
|
||||||
data = "<body>"
|
data = "<body>"
|
||||||
)]
|
)]
|
||||||
fn create_message_event_route(
|
fn create_message_event_route(
|
||||||
|
data: State<Data>,
|
||||||
_room_id: String,
|
_room_id: String,
|
||||||
_event_type: String,
|
_event_type: String,
|
||||||
_txn_id: String,
|
_txn_id: String,
|
||||||
body: Ruma<create_message_event::IncomingRequest>,
|
body: Ruma<create_message_event::IncomingRequest>,
|
||||||
) -> MatrixResult<create_message_event::Response> {
|
) -> 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 {
|
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
9
src/utils.rs
Normal 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()
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue