2026-01-14 16:12:15 -08:00
|
|
|
use std::error::Error;
|
|
|
|
|
use reqwest::{
|
|
|
|
|
IntoUrl,
|
|
|
|
|
Client,
|
|
|
|
|
};
|
|
|
|
|
use rss::Channel as RawChannel;
|
|
|
|
|
|
|
|
|
|
pub struct Channel {
|
|
|
|
|
pub channel: rss::Channel,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub async fn fetch_channel<T: IntoUrl>(
|
|
|
|
|
client: &Client, url: T) -> Result<Channel, Box<dyn Error>> {
|
|
|
|
|
let content = client.get(url)
|
|
|
|
|
.send().await?
|
|
|
|
|
.bytes().await?;
|
|
|
|
|
|
|
|
|
|
let raw_channel = RawChannel::read_from(&content[..])?;
|
|
|
|
|
println!("{}", raw_channel.title);
|
|
|
|
|
Ok(Channel { channel: raw_channel })
|
|
|
|
|
}
|