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",
]
[[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]]
name = "hyper-tls"
version = "0.5.0"
@@ -783,6 +796,7 @@ version = "0.1.1"
dependencies = [
"futures-util",
"lazy_static",
"livekit-api",
"livekit-protocol",
"livekit-webrtc",
"log",
@@ -792,22 +806,25 @@ dependencies = [
"serde_json",
"thiserror",
"tokio",
"tokio-tungstenite",
"url",
]
[[package]]
name = "livekit-api"
version = "0.1.0"
dependencies = [
"futures-util",
"jsonwebtoken",
"livekit-protocol",
"log",
"parking_lot",
"prost",
"reqwest",
"serde",
"serde_json",
"sha2",
"thiserror",
"tokio",
"tokio-tungstenite",
"url",
]
@@ -1253,6 +1270,7 @@ dependencies = [
"http",
"http-body",
"hyper",
"hyper-rustls",
"hyper-tls",
"ipnet",
"js-sys",
@@ -1262,16 +1280,21 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
"rustls",
"rustls-native-certs",
"rustls-pemfile",
"serde",
"serde_json",
"serde_urlencoded",
"tokio",
"tokio-native-tls",
"tokio-rustls",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
"web-sys",
"webpki-roots 0.22.6",
"winreg",
]
@@ -1690,7 +1713,7 @@ dependencies = [
"tokio-native-tls",
"tokio-rustls",
"tungstenite",
"webpki-roots",
"webpki-roots 0.23.1",
]
[[package]]
@@ -1931,6 +1954,15 @@ dependencies = [
"untrusted",
]
[[package]]
name = "webpki-roots"
version = "0.22.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87"
dependencies = [
"webpki",
]
[[package]]
name = "webpki-roots"
version = "0.23.1"
+17
View File
@@ -1479,6 +1479,7 @@ version = "0.1.1"
dependencies = [
"futures-util",
"lazy_static",
"livekit-api",
"livekit-protocol",
"livekit-webrtc",
"log",
@@ -1488,6 +1489,22 @@ dependencies = [
"serde_json",
"thiserror",
"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",
"url",
]
+31 -6
View File
@@ -3,13 +3,38 @@ name = "livekit-api"
version = "0.1.0"
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]
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" }
thiserror = "1.0"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sha2 = "0.10.6"
reqwest = { version = "0.11", features=["json"] }
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;
#[cfg(feature = "services")]
pub mod services;
#[cfg(feature = "signal-client")]
pub mod signal_client;
pub mod webhook_receiver;
#[allow(dead_code)]
pub(crate) fn get_env_keys() -> Result<(String, String), std::env::VarError> {
let api_key = std::env::var("LIVEKIT_API_KEY")?;
let api_secret = std::env::var("LIVEKIT_API_SECRET")?;
@@ -10,9 +10,9 @@ use tokio_tungstenite::tungstenite::Error as WsError;
mod signal_stream;
pub(crate) type SignalEmitter = mpsc::Sender<SignalEvent>;
pub(crate) type SignalEvents = mpsc::Receiver<SignalEvent>;
pub(crate) type SignalResult<T> = Result<T, SignalError>;
pub type SignalEmitter = mpsc::Sender<SignalEvent>;
pub type SignalEvents = mpsc::Receiver<SignalEvent>;
pub type SignalResult<T> = Result<T, SignalError>;
pub const JOIN_RESPONSE_TIMEOUT: Duration = Duration::from_secs(5);
pub const PROTOCOL_VERSION: u32 = 8;
@@ -11,8 +11,6 @@ use tokio_tungstenite::tungstenite::protocol::CloseFrame;
use tokio_tungstenite::tungstenite::Message;
use tokio_tungstenite::{connect_async, MaybeTlsStream, WebSocketStream};
use super::SignalEvents;
type WebSocket = WebSocketStream<MaybeTlsStream<TcpStream>>;
#[derive(Debug)]
+6 -7
View File
@@ -12,22 +12,21 @@ default = []
# 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"]
native-tls-vendored = ["tokio-tungstenite/native-tls-vendored"]
rustls-tls-native-roots = ["tokio-tungstenite/rustls-tls-native-roots"]
rustls-tls-webpki-roots = ["tokio-tungstenite/rustls-tls-webpki-roots"]
__rustls-tls = ["tokio-tungstenite/__rustls-tls"]
native-tls = ["livekit-api/native-tls"]
native-tls-vendored = ["livekit-api/native-tls-vendored"]
rustls-tls-native-roots = ["livekit-api/rustls-tls-native-roots"]
rustls-tls-webpki-roots = ["livekit-api/rustls-tls-webpki-roots"]
__rustls-tls = ["livekit-api/__rustls-tls"]
[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-protocol = { path = "../livekit-protocol", version = "0.1.0" }
prost = "0.11"
serde = { version = "1", features = ["derive"] }
serde_json = "1.0"
tokio-tungstenite = { version = "0.19" }
tokio = { version = "1", features = ["full"] }
parking_lot = { version = "0.12.1" }
url = "2.3"
futures-util = { version = "0.3", default-features = false, features = ["sink"] }
thiserror = "1.0"
lazy_static = "1.4"
-1
View File
@@ -3,7 +3,6 @@ extern crate core;
pub mod proto;
mod room;
mod rtc_engine;
mod signal_client;
pub mod webrtc {
pub use livekit_webrtc::*;
+1 -1
View File
@@ -3,7 +3,7 @@ use crate::participant::ConnectionQuality;
use crate::prelude::*;
use crate::rtc_engine::EngineError;
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::observer::Dispatcher;
use parking_lot::{Mutex, RwLock, RwLockReadGuard};
+1 -1
View File
@@ -2,8 +2,8 @@ use crate::options::TrackPublishOptions;
use crate::prelude::LocalTrack;
use crate::rtc_engine::lk_runtime::LkRuntime;
use crate::rtc_engine::rtc_session::{RtcSession, SessionEvent, SessionEvents};
use crate::signal_client::{SignalError, SignalOptions};
use crate::DataPacketKind;
use livekit_api::signal_client::{SignalError, SignalOptions};
use livekit_protocol as proto;
use livekit_webrtc::prelude::*;
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::peer_transport::PeerTransport;
use crate::rtc_engine::rtc_events::{RtcEvent, RtcEvents};
use crate::signal_client::{SignalClient, SignalEvent, SignalEvents, SignalOptions};
use crate::track::LocalTrack;
use crate::DataPacketKind;
use livekit_api::signal_client::{SignalClient, SignalEvent, SignalEvents, SignalOptions};
use livekit_protocol as proto;
use livekit_webrtc::prelude::*;
use parking_lot::Mutex;