use crate::state::AppState; use axum::{extract::State, http::HeaderMap, response::IntoResponse}; use reqwest::header; use std::sync::Arc; pub async fn stream_handler(State(state): State>) -> impl IntoResponse { state.clone().check_update().await; let content = feed(&state.urls.read().await.to_vec()); let mut headers = HeaderMap::new(); headers.insert(header::CONTENT_TYPE, "application/rss+xml".parse().unwrap()); (headers, content) } fn feed(urls: &Vec) -> String { let mut ret = String::new(); ret.push_str(r#""#); ret.push_str(r#""#); ret.push_str(""); ret.push_str("Ö1 Morgenjournal Feed"); ret.push_str("https://news.hofer.link"); ret.push_str("Feed für Ö1 Morgenjournal. Live."); for url in urls { ret.push_str(""); ret.push_str(&format!("Morgenjournal")); ret.push_str(&format!("{}", quick_xml::escape::escape(url))); ret.push_str(&format!("Morgenjournal")); ret.push_str(""); } ret.push_str(" "); ret.push_str(""); ret }