extract feed::get

This commit is contained in:
Paul Campbell 2023-07-25 10:50:00 +01:00
parent 507447f6ad
commit 0b6903404a
3 changed files with 13 additions and 9 deletions

9
src/feed/get.rs Normal file
View file

@ -0,0 +1,9 @@
use atom_syndication::Feed;
use crate::prelude::*;
pub fn get_feed(url: String) -> Result<Feed> {
let content = reqwest::blocking::get(url)?.bytes()?;
let channel = Feed::read_from(&content[..])?;
Ok(channel)
}

View file

@ -1,3 +1,5 @@
mod find;
mod get;
pub use find::get_feed_url;
pub use get::get_feed;

View file

@ -2,7 +2,7 @@
use std::fs::File;
use atom_syndication::{Entry, Feed, Link};
use atom_syndication::{Entry, Link};
mod errors;
mod feed;
@ -15,7 +15,7 @@ pub fn run(subscriptions: &str, history: &str, site: &str) -> Result<()> {
let channel_name = channel_name?;
println!("Channel: {}", channel_name);
let feed_url = feed::get_feed_url(site, &channel_name)?;
for entry in get_feed(feed_url)?.entries() {
for entry in feed::get_feed(feed_url)?.entries() {
if let Some(link) = get_link(entry) {
if !is_already_downloaded(&link, history)? {
println!("Downloading {}: {}", &channel_name, entry.title().as_str());
@ -41,13 +41,6 @@ fn lines_from(file_name: &str) -> Result<std::io::Lines<std::io::BufReader<std::
Ok(reader.lines())
}
// fetch the RSS feed
fn get_feed(url: String) -> Result<Feed> {
let content = reqwest::blocking::get(url)?.bytes()?;
let channel = Feed::read_from(&content[..])?;
Ok(channel)
}
fn is_already_downloaded(link: &Link, file_name: &str) -> Result<bool> {
use std::io::{BufRead, BufReader};