pub mod jaconfig;
pub mod jaconnection;
pub mod jahandle;
pub mod japlugin;
pub mod jasession;
pub mod prelude;
pub use jarust_interface::tgenerator::GenerateTransaction;
use jaconfig::JaConfig;
use jaconfig::JanusAPI;
use jaconnection::JaConnection;
use jarust_interface::janus_interface::ConnectionParams;
use jarust_interface::janus_interface::JanusInterface;
use jarust_interface::restful::RestfulInterface;
use jarust_interface::websocket::WebSocketInterface;
use tracing::Level;
#[cfg(not(target_family = "wasm"))]
pub async fn connect(
jaconfig: JaConfig,
api_interface: JanusAPI,
transaction_generator: impl GenerateTransaction,
) -> Result<JaConnection, jarust_interface::Error> {
let conn_params = ConnectionParams {
url: jaconfig.url,
capacity: jaconfig.capacity,
apisecret: jaconfig.apisecret,
server_root: jaconfig.server_root,
};
match api_interface {
JanusAPI::WebSocket => {
custom_connect(
WebSocketInterface::make_interface(conn_params, transaction_generator).await?,
)
.await
}
JanusAPI::Restful => {
custom_connect(
RestfulInterface::make_interface(conn_params, transaction_generator).await?,
)
.await
}
}
}
#[cfg(target_family = "wasm")]
pub async fn connect(
jaconfig: JaConfig,
api_interface: JanusAPI,
transaction_generator: impl GenerateTransaction,
) -> Result<JaConnection, jarust_interface::Error> {
todo!("WASM is not supported yet")
}
#[tracing::instrument(level = Level::TRACE, skip_all)]
pub async fn custom_connect(
interface: impl JanusInterface,
) -> Result<JaConnection, jarust_interface::Error> {
JaConnection::open(interface).await
}