#![doc = include_str!("../README.md")]
#![deny(rustdoc::broken_intra_doc_links)]
#![deny(rustdoc::invalid_codeblock_attributes)]
#![warn(missing_docs)]
#[cfg(feature = "cli")]
pub mod app;
#[cfg(feature = "catalog")]
pub mod catalog;
#[cfg(feature = "cli")]
pub mod cli;
#[cfg(feature = "client")]
pub mod client;
#[cfg(any(feature = "cli", feature = "server"))]
pub mod config;
#[cfg(any(feature = "client", feature = "cli", feature = "server"))]
pub mod env;
#[cfg(feature = "client")]
pub mod error;
#[cfg(feature = "client")]
pub mod events;
#[cfg(any(feature = "cli", feature = "server"))]
pub mod output;
#[cfg(feature = "client")]
pub mod platforms;
#[cfg(feature = "server")]
pub mod server;
#[cfg(feature = "cli")]
pub mod telemetry;
#[cfg(feature = "catalog")]
pub use catalog::{
ApiMethodSpec, HttpMethod, ParsePlatformError, Platform, PlatformSpec, all_platform_specs,
find_method, get_api_route, get_chinese_method_name, get_english_method_name, method_specs,
platform_spec,
};
#[cfg(feature = "client")]
pub use client::{
AmagiClient, ClientOptions, CookieConfig, PlatformClient, RequestConfig, RequestProfile,
create_amagi_client,
};
#[cfg(feature = "client")]
pub use error::AppError;
#[cfg(feature = "client")]
pub use events::{
AmagiEvent, AmagiEventType, ApiErrorEventData, ApiSuccessEventData, EventBus, EventLogLevel,
HttpRequestEventData, HttpResponseEventData, LogEventData, NetworkErrorEventData,
NetworkRetryEventData,
};
#[cfg(feature = "client")]
pub use platforms::{bilibili, douyin, kuaishou, twitter, xiaohongshu};
pub const APP_NAME: &str = "amagi";
pub const DEFAULT_HOST: &str = "127.0.0.1";
pub const DEFAULT_PORT: u16 = 4567;
#[cfg(feature = "cli")]
pub async fn run_env() -> Result<(), error::AppError> {
let config = cli::try_parse_env()?;
app::run(config).await
}
#[cfg(feature = "cli")]
pub fn print_startup_error(error: &error::AppError) {
output::print_startup_error(APP_NAME, error);
}