feat: move signal_client to livekit-api (#98)

This commit is contained in:
Théo Monnom
2023-06-26 22:59:55 +02:00
committed by GitHub
parent 678e20b0e3
commit efc334af8e
11 changed files with 102 additions and 25 deletions
Generated
+35 -3
View File
@@ -625,6 +625,19 @@ dependencies = [
"want", "want",
] ]
[[package]]
name = "hyper-rustls"
version = "0.24.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0646026eb1b3eea4cd9ba47912ea5ce9cc07713d105b1a14698f4e6433d348b7"
dependencies = [
"http",
"hyper",
"rustls",
"tokio",
"tokio-rustls",
]
[[package]] [[package]]
name = "hyper-tls" name = "hyper-tls"
version = "0.5.0" version = "0.5.0"
@@ -783,6 +796,7 @@ version = "0.1.1"
dependencies = [ dependencies = [
"futures-util", "futures-util",
"lazy_static", "lazy_static",
"livekit-api",
"livekit-protocol", "livekit-protocol",
"livekit-webrtc", "livekit-webrtc",
"log", "log",
@@ -792,22 +806,25 @@ dependencies = [
"serde_json", "serde_json",
"thiserror", "thiserror",
"tokio", "tokio",
"tokio-tungstenite",
"url",
] ]
[[package]] [[package]]
name = "livekit-api" name = "livekit-api"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"futures-util",
"jsonwebtoken", "jsonwebtoken",
"livekit-protocol", "livekit-protocol",
"log",
"parking_lot",
"prost", "prost",
"reqwest", "reqwest",
"serde", "serde",
"serde_json", "serde_json",
"sha2", "sha2",
"thiserror", "thiserror",
"tokio",
"tokio-tungstenite",
"url", "url",
] ]
@@ -1253,6 +1270,7 @@ dependencies = [
"http", "http",
"http-body", "http-body",
"hyper", "hyper",
"hyper-rustls",
"hyper-tls", "hyper-tls",
"ipnet", "ipnet",
"js-sys", "js-sys",
@@ -1262,16 +1280,21 @@ dependencies = [
"once_cell", "once_cell",
"percent-encoding", "percent-encoding",
"pin-project-lite", "pin-project-lite",
"rustls",
"rustls-native-certs",
"rustls-pemfile",
"serde", "serde",
"serde_json", "serde_json",
"serde_urlencoded", "serde_urlencoded",
"tokio", "tokio",
"tokio-native-tls", "tokio-native-tls",
"tokio-rustls",
"tower-service", "tower-service",
"url", "url",
"wasm-bindgen", "wasm-bindgen",
"wasm-bindgen-futures", "wasm-bindgen-futures",
"web-sys", "web-sys",
"webpki-roots 0.22.6",
"winreg", "winreg",
] ]
@@ -1690,7 +1713,7 @@ dependencies = [
"tokio-native-tls", "tokio-native-tls",
"tokio-rustls", "tokio-rustls",
"tungstenite", "tungstenite",
"webpki-roots", "webpki-roots 0.23.1",
] ]
[[package]] [[package]]
@@ -1931,6 +1954,15 @@ dependencies = [
"untrusted", "untrusted",
] ]
[[package]]
name = "webpki-roots"
version = "0.22.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87"
dependencies = [
"webpki",
]
[[package]] [[package]]
name = "webpki-roots" name = "webpki-roots"
version = "0.23.1" version = "0.23.1"
+17
View File
@@ -1479,6 +1479,7 @@ version = "0.1.1"
dependencies = [ dependencies = [
"futures-util", "futures-util",
"lazy_static", "lazy_static",
"livekit-api",
"livekit-protocol", "livekit-protocol",
"livekit-webrtc", "livekit-webrtc",
"log", "log",
@@ -1488,6 +1489,22 @@ dependencies = [
"serde_json", "serde_json",
"thiserror", "thiserror",
"tokio", "tokio",
]
[[package]]
name = "livekit-api"
version = "0.1.0"
dependencies = [
"futures-util",
"livekit-protocol",
"log",
"parking_lot",
"prost",
"serde",
"serde_json",
"sha2",
"thiserror",
"tokio",
"tokio-tungstenite", "tokio-tungstenite",
"url", "url",
] ]
+31 -6
View File
@@ -3,13 +3,38 @@ name = "livekit-api"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
[features]
# By default ws TLS is not enabled
default = ["services", "access-token"]
signal-client = ["dep:tokio-tungstenite", "dep:tokio", "dep:futures-util" ]
services = ["dep:reqwest"]
access-token = ["dep:jsonwebtoken"]
# Note that the following features only change the behavior of tokio-tungstenite.
# It doesn't change the behavior of libwebrtc/webrtc-sys
native-tls = ["tokio-tungstenite?/native-tls", "reqwest?/native-tls"]
native-tls-vendored = ["tokio-tungstenite?/native-tls-vendored", "reqwest?/native-tls-vendored"]
rustls-tls-native-roots = ["tokio-tungstenite?/rustls-tls-native-roots", "reqwest?/rustls-tls-native-roots"]
rustls-tls-webpki-roots = ["tokio-tungstenite?/rustls-tls-webpki-roots", "reqwest?/rustls-tls-webpki-roots"]
__rustls-tls = ["tokio-tungstenite?/__rustls-tls", "reqwest?/__rustls"]
[dependencies] [dependencies]
jsonwebtoken = {version = "8", default-features = false }
thiserror = "1.0"
serde = {version = "1.0", features = ["derive"] }
serde_json = "1.0"
livekit-protocol = { path = "../livekit-protocol", version = "0.1.0" } livekit-protocol = { path = "../livekit-protocol", version = "0.1.0" }
thiserror = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sha2 = "0.10.6" sha2 = "0.10.6"
reqwest = { version = "0.11", features=["json"] }
url = "2.3.1" url = "2.3.1"
prost = "0.11.9" log = "0.4"
parking_lot = { version = "0.12.1" }
prost = "0.11"
# access_token & services
jsonwebtoken = { version = "8", default-features = false, optional = true }
reqwest = { version = "0.11", default-features = false, features = ["json"], optional = true }
# signal_client
tokio-tungstenite = { version = "0.19", optional = true }
tokio = { version = "1", features = ["full"], optional = true }
futures-util = { version = "0.3", default-features = false, features = ["sink"], optional = true }
+7
View File
@@ -1,7 +1,14 @@
#[cfg(feature = "access-token")]
pub mod access_token; pub mod access_token;
#[cfg(feature = "services")]
pub mod services; pub mod services;
#[cfg(feature = "signal-client")]
pub mod signal_client;
pub mod webhook_receiver; pub mod webhook_receiver;
#[allow(dead_code)]
pub(crate) fn get_env_keys() -> Result<(String, String), std::env::VarError> { pub(crate) fn get_env_keys() -> Result<(String, String), std::env::VarError> {
let api_key = std::env::var("LIVEKIT_API_KEY")?; let api_key = std::env::var("LIVEKIT_API_KEY")?;
let api_secret = std::env::var("LIVEKIT_API_SECRET")?; let api_secret = std::env::var("LIVEKIT_API_SECRET")?;
@@ -10,9 +10,9 @@ use tokio_tungstenite::tungstenite::Error as WsError;
mod signal_stream; mod signal_stream;
pub(crate) type SignalEmitter = mpsc::Sender<SignalEvent>; pub type SignalEmitter = mpsc::Sender<SignalEvent>;
pub(crate) type SignalEvents = mpsc::Receiver<SignalEvent>; pub type SignalEvents = mpsc::Receiver<SignalEvent>;
pub(crate) type SignalResult<T> = Result<T, SignalError>; pub type SignalResult<T> = Result<T, SignalError>;
pub const JOIN_RESPONSE_TIMEOUT: Duration = Duration::from_secs(5); pub const JOIN_RESPONSE_TIMEOUT: Duration = Duration::from_secs(5);
pub const PROTOCOL_VERSION: u32 = 8; pub const PROTOCOL_VERSION: u32 = 8;
@@ -11,8 +11,6 @@ use tokio_tungstenite::tungstenite::protocol::CloseFrame;
use tokio_tungstenite::tungstenite::Message; use tokio_tungstenite::tungstenite::Message;
use tokio_tungstenite::{connect_async, MaybeTlsStream, WebSocketStream}; use tokio_tungstenite::{connect_async, MaybeTlsStream, WebSocketStream};
use super::SignalEvents;
type WebSocket = WebSocketStream<MaybeTlsStream<TcpStream>>; type WebSocket = WebSocketStream<MaybeTlsStream<TcpStream>>;
#[derive(Debug)] #[derive(Debug)]
+6 -7
View File
@@ -12,22 +12,21 @@ default = []
# Note that the following features only change the behavior of tokio-tungstenite. # Note that the following features only change the behavior of tokio-tungstenite.
# It doesn't change the behavior of libwebrtc/webrtc-sys # It doesn't change the behavior of libwebrtc/webrtc-sys
native-tls = ["tokio-tungstenite/native-tls"] native-tls = ["livekit-api/native-tls"]
native-tls-vendored = ["tokio-tungstenite/native-tls-vendored"] native-tls-vendored = ["livekit-api/native-tls-vendored"]
rustls-tls-native-roots = ["tokio-tungstenite/rustls-tls-native-roots"] rustls-tls-native-roots = ["livekit-api/rustls-tls-native-roots"]
rustls-tls-webpki-roots = ["tokio-tungstenite/rustls-tls-webpki-roots"] rustls-tls-webpki-roots = ["livekit-api/rustls-tls-webpki-roots"]
__rustls-tls = ["tokio-tungstenite/__rustls-tls"] __rustls-tls = ["livekit-api/__rustls-tls"]
[dependencies] [dependencies]
livekit-api = { path = "../livekit-api", version = "0.1.0", default-features = false, features = ["signal-client"] }
livekit-webrtc = { path = "../livekit-webrtc", version = "0.1.1" } livekit-webrtc = { path = "../livekit-webrtc", version = "0.1.1" }
livekit-protocol = { path = "../livekit-protocol", version = "0.1.0" } livekit-protocol = { path = "../livekit-protocol", version = "0.1.0" }
prost = "0.11" prost = "0.11"
serde = { version = "1", features = ["derive"] } serde = { version = "1", features = ["derive"] }
serde_json = "1.0" serde_json = "1.0"
tokio-tungstenite = { version = "0.19" }
tokio = { version = "1", features = ["full"] } tokio = { version = "1", features = ["full"] }
parking_lot = { version = "0.12.1" } parking_lot = { version = "0.12.1" }
url = "2.3"
futures-util = { version = "0.3", default-features = false, features = ["sink"] } futures-util = { version = "0.3", default-features = false, features = ["sink"] }
thiserror = "1.0" thiserror = "1.0"
lazy_static = "1.4" lazy_static = "1.4"
-1
View File
@@ -3,7 +3,6 @@ extern crate core;
pub mod proto; pub mod proto;
mod room; mod room;
mod rtc_engine; mod rtc_engine;
mod signal_client;
pub mod webrtc { pub mod webrtc {
pub use livekit_webrtc::*; pub use livekit_webrtc::*;
+1 -1
View File
@@ -3,7 +3,7 @@ use crate::participant::ConnectionQuality;
use crate::prelude::*; use crate::prelude::*;
use crate::rtc_engine::EngineError; use crate::rtc_engine::EngineError;
use crate::rtc_engine::{EngineEvent, EngineEvents, EngineResult, RtcEngine}; use crate::rtc_engine::{EngineEvent, EngineEvents, EngineResult, RtcEngine};
use crate::signal_client::SignalOptions; use livekit_api::signal_client::SignalOptions;
use livekit_protocol as proto; use livekit_protocol as proto;
use livekit_protocol::observer::Dispatcher; use livekit_protocol::observer::Dispatcher;
use parking_lot::{Mutex, RwLock, RwLockReadGuard}; use parking_lot::{Mutex, RwLock, RwLockReadGuard};
+1 -1
View File
@@ -2,8 +2,8 @@ use crate::options::TrackPublishOptions;
use crate::prelude::LocalTrack; use crate::prelude::LocalTrack;
use crate::rtc_engine::lk_runtime::LkRuntime; use crate::rtc_engine::lk_runtime::LkRuntime;
use crate::rtc_engine::rtc_session::{RtcSession, SessionEvent, SessionEvents}; use crate::rtc_engine::rtc_session::{RtcSession, SessionEvent, SessionEvents};
use crate::signal_client::{SignalError, SignalOptions};
use crate::DataPacketKind; use crate::DataPacketKind;
use livekit_api::signal_client::{SignalError, SignalOptions};
use livekit_protocol as proto; use livekit_protocol as proto;
use livekit_webrtc::prelude::*; use livekit_webrtc::prelude::*;
use livekit_webrtc::session_description::SdpParseError; use livekit_webrtc::session_description::SdpParseError;
+1 -1
View File
@@ -4,9 +4,9 @@ use crate::prelude::TrackKind;
use crate::rtc_engine::lk_runtime::LkRuntime; use crate::rtc_engine::lk_runtime::LkRuntime;
use crate::rtc_engine::peer_transport::PeerTransport; use crate::rtc_engine::peer_transport::PeerTransport;
use crate::rtc_engine::rtc_events::{RtcEvent, RtcEvents}; use crate::rtc_engine::rtc_events::{RtcEvent, RtcEvents};
use crate::signal_client::{SignalClient, SignalEvent, SignalEvents, SignalOptions};
use crate::track::LocalTrack; use crate::track::LocalTrack;
use crate::DataPacketKind; use crate::DataPacketKind;
use livekit_api::signal_client::{SignalClient, SignalEvent, SignalEvents, SignalOptions};
use livekit_protocol as proto; use livekit_protocol as proto;
use livekit_webrtc::prelude::*; use livekit_webrtc::prelude::*;
use parking_lot::Mutex; use parking_lot::Mutex;