A lexicon-driven AppView for ATProto.
0

Configure Feed

Select the types of activity you want to include in your feed.

happyview / src / lib.rs
2.8 kB 97 lines
1pub mod admin; 2pub mod auth; 3pub mod config; 4pub mod db; 5pub mod delegation; 6pub mod dev_happyview; 7pub mod dns; 8pub mod domain; 9pub mod domain_middleware; 10pub mod error; 11pub mod event_log; 12pub mod external_auth; 13pub mod feature_flags; 14pub mod feature_middleware; 15pub mod http_retry; 16pub mod jetstream; 17pub mod jobs; 18pub mod labeler; 19pub mod lexicon; 20pub mod lua; 21pub mod lua_analysis; 22pub mod oauth; 23pub mod plc; 24pub mod plugin; 25pub mod profile; 26pub mod proxy_config; 27pub mod rate_limit; 28pub mod record_handler; 29pub mod record_refs; 30pub mod repo; 31pub mod resolve; 32pub mod server; 33pub mod service_entries; 34pub mod service_identity; 35pub mod setup; 36pub mod spaces; 37pub mod verification_methods; 38pub mod xrpc; 39 40use auth::oauth_store::{DbSessionStore, DbStateStore}; 41use config::Config; 42use db::DatabaseBackend; 43use dns::NativeDnsResolver; 44use lexicon::LexiconRegistry; 45use plugin::official_registry::{RegistryConfig, SharedRegistry}; 46use rate_limit::RateLimiter; 47use std::sync::Arc; 48use tokio::sync::watch; 49 50use atrium_identity::did::CommonDidResolver; 51use atrium_identity::handle::AtprotoHandleResolver; 52use atrium_oauth::DefaultHttpClient; 53 54pub type HappyViewOAuthClient = atrium_oauth::OAuthClient< 55 DbStateStore, 56 DbSessionStore, 57 CommonDidResolver<DefaultHttpClient>, 58 AtprotoHandleResolver<NativeDnsResolver, DefaultHttpClient>, 59>; 60 61pub type HappyViewOAuthSession = atrium_oauth::OAuthSession< 62 DefaultHttpClient, 63 CommonDidResolver<DefaultHttpClient>, 64 AtprotoHandleResolver<NativeDnsResolver, DefaultHttpClient>, 65 DbSessionStore, 66>; 67 68#[derive(Clone)] 69pub struct AppState { 70 pub config: Config, 71 pub http: reqwest::Client, 72 pub db: sqlx::AnyPool, 73 pub backfill_db: sqlx::AnyPool, 74 pub db_backend: DatabaseBackend, 75 pub domain_cache: domain::DomainCache, 76 pub lexicons: LexiconRegistry, 77 pub collections_tx: watch::Sender<Vec<String>>, 78 pub labeler_subscriptions_tx: watch::Sender<()>, 79 pub rate_limiter: Arc<RateLimiter>, 80 pub oauth: Arc<auth::OAuthClientRegistry>, 81 pub oauth_state_store: DbStateStore, 82 pub cookie_key: axum_extra::extract::cookie::Key, 83 pub plugin_registry: Arc<plugin::PluginRegistry>, 84 pub wasm_runtime: Arc<plugin::WasmRuntime>, 85 pub attestation_signer: Option<Arc<plugin::attestation::AttestationSigner>>, 86 pub official_registry: SharedRegistry, 87 pub official_registry_config: RegistryConfig, 88 pub proxy_config: Arc<arc_swap::ArcSwap<proxy_config::ProxyConfig>>, 89 pub backfill_events_tx: tokio::sync::broadcast::Sender<crate::admin::types::BackfillEvent>, 90 pub verbose_event_logging: std::sync::Arc<std::sync::atomic::AtomicBool>, 91} 92 93impl axum::extract::FromRef<AppState> for axum_extra::extract::cookie::Key { 94 fn from_ref(state: &AppState) -> Self { 95 state.cookie_key.clone() 96 } 97}