use std::sync::LazyLock; use chrono::DateTime; use leptos::logging::log; use protocol::{RTCSessionOffer, Signal}; use reqwest::Response; use serde_json::{Value, json}; const SIGNALLING_ADDRESS: &str = "http://127.0.0.1:4546"; static REQUEST_CLIENT: LazyLock = LazyLock::new(|| reqwest::Client::new()); async fn post_json(json: &Value) -> Result { REQUEST_CLIENT .post(SIGNALLING_ADDRESS) .json(json) .send() .await } pub async fn start_signalling(username: String) { log!("Start Signalling"); log!("{}\n{}", username, SIGNALLING_ADDRESS); let signal = Signal { username, time: DateTime::default(), }; let json = json!(signal); match post_json(&json).await { Ok(signal_response) => log!("{:#?}", signal_response), Err(err_val) => { log!("Error: Signal Post | {}", err_val); } } } pub async fn send_offer(rtc_session_offer: RTCSessionOffer) { let rtc_session_offer = json!(rtc_session_offer); match post_json(&rtc_session_offer).await { Ok(signal_response) => log!("{:#?}", signal_response), Err(err_val) => { log!("Error: Signal Post | {}", err_val); } } } pub async fn receive_offer(username: String) { let json = json!(username); match post_json(&json).await { Ok(signal_response) => log!("{:#?}", signal_response), Err(err_val) => { log!("Error: Signal Post | {}", err_val); } } } pub async fn send_answer(rtc_session_offer: RTCSessionOffer) { let rtc_session_offer = json!(rtc_session_offer); match post_json(&rtc_session_offer).await { Ok(signal_response) => log!("{:#?}", signal_response), Err(err_val) => { log!("Error: Signal Post | {}", err_val); } } } pub async fn receive_answer(username: String) { let json = json!(username); match post_json(&json).await { Ok(signal_response) => log!("{:#?}", signal_response), Err(err_val) => { log!("Error: Signal Post | {}", err_val); } } }