From 6d4201c378f200528d97e2f833e0f3ce18958679 Mon Sep 17 00:00:00 2001 From: death916 Date: Tue, 24 Mar 2026 04:34:32 -0700 Subject: [PATCH] get feed lists and return feeds --- rustclock/Cargo.lock | 14 +++++++++++ rustclock/Cargo.toml | 2 +- rustclock/src/news.rs | 57 +++++++++++++++++++++++++----------------- rustclock/src/panes.rs | 4 +-- 4 files changed, 51 insertions(+), 26 deletions(-) diff --git a/rustclock/Cargo.lock b/rustclock/Cargo.lock index 8d3fdfe..a2f051e 100644 --- a/rustclock/Cargo.lock +++ b/rustclock/Cargo.lock @@ -4319,11 +4319,25 @@ dependencies = [ "bytes", "libc", "mio", + "parking_lot", "pin-project-lite", + "signal-hook-registry", "socket2", + "tokio-macros", "windows-sys 0.61.2", ] +[[package]] +name = "tokio-macros" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tokio-rustls" version = "0.26.4" diff --git a/rustclock/Cargo.toml b/rustclock/Cargo.toml index 58584d2..8b045cc 100644 --- a/rustclock/Cargo.toml +++ b/rustclock/Cargo.toml @@ -10,5 +10,5 @@ reqwest = "0.13.2" rss = "2.0.12" serde = { version = "1.0.228", features = ["derive"] } serde_json = "1.0.149" -tokio = "1.50.0" +tokio = { version = "1.50.0", features = ["full"] } ureq = "3.2.0" diff --git a/rustclock/src/news.rs b/rustclock/src/news.rs index 06118fd..3c1b15b 100644 --- a/rustclock/src/news.rs +++ b/rustclock/src/news.rs @@ -2,25 +2,17 @@ use rss::Channel; use std::fs::File; use std::io::{BufRead, BufReader}; use std::str::FromStr; +use ureq::http::Response; -pub fn get_news() { +pub async fn get_news() -> Vec { let feeds = File::open("../feeds.txt"); let mut feed_vec = Vec::new(); + let mut news = Vec::new(); match feeds { Ok(file) => { let reader = BufReader::new(file); - let channel = Channel::read_from(reader); - if let Ok(channel) = channel { - println!("Title: {}", channel.title()); - println!("Link: {}", channel.link()); - println!("Description: {}", channel.description()); - } else { - eprintln!("Error parsing feed: {}", reader); - } - for line in reader.lines() { if let Ok(feed) = line { - dbg!(&feed); feed_vec.push(feed); } } @@ -31,20 +23,39 @@ pub fn get_news() { } for feed in feed_vec.iter() { - let content = feed.as_str(); - dbg!(content); - let channel = Channel::from_str(content); - if let Ok(channel) = channel { - println!("Title: {}", channel.title()); - println!("Link: {}", channel.link()); - println!("Description: {}", channel.description()); - } else { - eprintln!("Error parsing feed: {}", content); + let feed_url = feed.as_str(); + let content = reqwest::get(feed_url).await; + + match content { + Ok(contents) => { + let contents = contents.bytes().await; + if let Ok(response) = contents { + let channel = Channel::read_from(&response[..]); + // dbg!(&channel); + match channel { + Ok(feed) => { + dbg!("Title: {}", feed.title()); + dbg!("Link: {}", feed.link()); + news.push(feed); + } + Err(e) => { + eprintln!("Error parsing feed: {},{}", feed_url, e); + } + } + } + } + + Err(e) => { + eprintln!("Error fetching feed: {},{}", feed_url, e); + continue; + } } } + news } -#[test] -fn test() { - get_news(); +#[tokio::test] +async fn test() { + let news = get_news().await; + assert!(news.len() > 0); } diff --git a/rustclock/src/panes.rs b/rustclock/src/panes.rs index 5a3c4ab..633b9b2 100644 --- a/rustclock/src/panes.rs +++ b/rustclock/src/panes.rs @@ -85,9 +85,9 @@ pub fn render_mlb_pane<'a>( container( column![ row![ - image(team1_logo.clone()).width(15).height(15), + image(team1_logo.clone()).width(30).height(30), text(&game.team1).size(20).width(Fill), - image(team2_logo.clone()).width(15).height(15), + image(team2_logo.clone()).width(30).height(30), text(&game.team2).size(20).width(Fill), ], row![