A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at fix/track-metadata 37 lines 1.1 kB view raw
1use anyhow::Error; 2use std::{env, sync::Arc}; 3use subscriber::ScrobbleSubscriber; 4use tokio::sync::Mutex; 5 6use crate::webhook_worker::{start_worker, AppState}; 7 8pub mod profile; 9pub mod repo; 10pub mod subscriber; 11pub mod types; 12pub mod webhook; 13pub mod webhook_worker; 14pub mod xata; 15 16pub async fn subscribe() -> Result<(), Error> { 17 let redis_url = env::var("REDIS_URL").unwrap_or_else(|_| "redis://127.0.0.1:6379".to_string()); 18 let redis = redis::Client::open(redis_url)?; 19 let queue_key = 20 env::var("WEBHOOK_QUEUE_KEY").unwrap_or_else(|_| "rocksky:webhook_queue".to_string()); 21 22 let state = Arc::new(Mutex::new(AppState { redis, queue_key })); 23 24 start_worker(state.clone()).await?; 25 26 let jetstream_server = env::var("JETSTREAM_SERVER") 27 .unwrap_or_else(|_| "wss://jetstream2.us-west.bsky.network".to_string()); 28 let url = format!( 29 "{}/subscribe?wantedCollections=app.rocksky.*", 30 jetstream_server 31 ); 32 let subscriber = ScrobbleSubscriber::new(&url); 33 34 subscriber.run(state).await?; 35 36 Ok(()) 37}