diff --git a/json-api/src/messages.rs b/json-api/src/messages.rs index 20d9744..402413c 100644 --- a/json-api/src/messages.rs +++ b/json-api/src/messages.rs @@ -116,7 +116,7 @@ pub async fn send_message(pool: &Pool, response: &mut Response, body: Body match db::Message::send(pool, &content, ctype.unwrap(), channel_id.unwrap(), uid).await { Ok(Row(msg)) => { use crate::rtc; - rtc::new_message(msg).await; + rtc::new_message(pool, msg).await; }, Ok(Empty) => { }, // idk anymore Ok(RestrictedInput(_msg)) => *response.status_mut() = StatusCode::BAD_REQUEST, diff --git a/json-api/src/meta.rs b/json-api/src/meta.rs index 5f3f873..b21bfeb 100644 --- a/json-api/src/meta.rs +++ b/json-api/src/meta.rs @@ -5,22 +5,21 @@ use hyper::{Response, Body}; use serde_json::to_string; use serde::Serialize; + #[derive( Serialize)] pub struct Config { pub name: String, pub description: String, - pub hostname: String, - pub port: u16, - pub protocol: String, + pub url: String, + pub wsurl: String, } pub fn get_config() -> Config { Config { name: var("SERVER_NAME").unwrap_or("No name".into()), description: var("SERVER_DESCRIPTION").unwrap_or("No description".into()), - hostname: var("SERVER_HOSTNAME").expect("Couldn't get url from environment"), - port: var("SERVER_PORT").expect("Couldn't get port from environment").parse::().unwrap(), - protocol: var("SERVER_PROTOCOL").expect("Couldn't get protocol from environment") + url: var("PUBLIC_URL").unwrap(), + wsurl: var("PUBLIC_WS_URL").unwrap() } } diff --git a/json-api/src/rtc.rs b/json-api/src/rtc.rs index 0970b43..f85c1e9 100644 --- a/json-api/src/rtc.rs +++ b/json-api/src/rtc.rs @@ -13,6 +13,7 @@ */ use std::time::{SystemTime, UNIX_EPOCH}; +use mysql_async::Pool; use tokio_tungstenite::connect_async; use tokio_tungstenite::tungstenite::{Error, Message}; use futures::{StreamExt, SinkExt}; @@ -65,7 +66,6 @@ P: Serialize { // Flow: Connect -> Pick out stream -> Send Data over stream // The stream/connection is destroyed by the end of this call - println!("NOTIFYING WSS"); let (ws, _) = connect_async(make_url()).await?; let (mut write, _) = ws.split(); let event = event!(event_name, &payload); @@ -75,7 +75,28 @@ P: Serialize } -pub async fn new_message(message: db::Message) { +pub async fn new_message(p: &Pool, message: db::Message) { + let uname = match db::Member::get(p, message.author_id).await { + Ok(response) => { + match response { + db::Response::Row(user) => user.name, + _ => String::new() + } + }, + Err(e) => { + eprintln!("[HTTP-RTC] Couldn't fetch username {}", e); + String::new() + } + }; + let message = db::UserMessage { + id: message.id, + time: message.time, + content: message.content, + content_type: message.content_type, + author_id: message.author_id, + channel_id: message.channel_id, + name: uname, + }; if let Err(e) = notify("new-message", message).await { eprintln!("[API-RTC] Unable to connect to RTC server: {}", e); }