pub mod env;
pub mod fs;
pub mod http;
pub use env::BrowserEnvironment;
pub use fs::BrowserFileSystem;
pub use http::BrowserHttpClient;
use async_trait::async_trait;
use crate::Platform;
pub struct BrowserPlatform {
http: BrowserHttpClient,
fs: BrowserFileSystem,
env: BrowserEnvironment,
}
impl BrowserPlatform {
pub fn new() -> Self {
Self {
http: BrowserHttpClient::new(),
fs: BrowserFileSystem::new(),
env: BrowserEnvironment::new(),
}
}
pub fn with_env(env: BrowserEnvironment) -> Self {
Self {
http: BrowserHttpClient::new(),
fs: BrowserFileSystem::new(),
env,
}
}
}
impl Default for BrowserPlatform {
fn default() -> Self {
Self::new()
}
}
#[async_trait(?Send)]
impl Platform for BrowserPlatform {
fn http(&self) -> &dyn crate::http::HttpClient {
&self.http
}
fn fs(&self) -> &dyn crate::fs::FileSystem {
&self.fs
}
fn env(&self) -> &dyn crate::env::Environment {
&self.env
}
fn process(&self) -> Option<&dyn crate::process::ProcessSpawner> {
None
}
}