use crate::utils::{ request::{Request, Response}, task_log, }; use storage::services::{ aws::{S3Client, S3ClientConfig}, ObjectStorageClient, }; pub fn register(pool: &sqlx::Pool) { let p = pool.clone(); tokio::spawn(async move { let _ = upload_rss(&p).await; }); } async fn upload_rss(pool: &sqlx::Pool) -> Result<(), Box> { // start task logging task_log::start(2, pool).await?; // get request and request the things let request = Request::new(); let rss_url = format!("{}/posts/rss", request.base_url); let rss_result = request.request_url::(&rss_url).await.unwrap(); // upload the sucker to obj storage if let Response::Xml(rss) = rss_result { let client_config = S3ClientConfig::from_env().unwrap(); let s3_client = S3Client::new(&client_config); let _ = s3_client .put_object( client_config.bucket.as_str(), "feed.xml", rss.as_bytes().to_vec(), ) .await; println!("Finished uploading RSS feed"); } Ok(()) }