commit - 46f44a2336309e746db316fa3a6d8abb3bb27def
commit + d85ed18bc6ad9e2739516ed24ab4c199372afe7c
blob - 4c94182ff2167e7ae6de0ab51f0807c2f2823e0e
blob + 53178f50ba7c7590f521840d543ed9b8a972d356
--- src/db.rs
+++ src/db.rs
+use chrono::DateTime;
use diesel::prelude::*;
use diesel::sqlite::SqliteConnection;
use dotenv::dotenv;
use rss::Item;
use std::env;
-use chrono::DateTime;
use crate::models::NewPost;
use crate::schema::posts;
// inserts a new post or updates an old one with the same guid
pub fn insert_post(conn: &SqliteConnection, item: &Item) -> anyhow::Result<usize> {
- let time = item.pub_date().map(|date| DateTime::parse_from_rfc2822(date).unwrap().timestamp());
+ let time = item
+ .pub_date()
+ .map(|date| DateTime::parse_from_rfc2822(date).unwrap().timestamp());
let new_post = NewPost {
guid: item.guid().ok_or(anyhow!("No guid found"))?.value(),
blob - c6500ad8074f891d843a81b230fd47d60596650f
blob + 910e92a48e67397392a69654b75432283ff12699
--- src/main.rs
+++ src/main.rs
#[macro_use]
extern crate anyhow;
+pub mod clap;
pub mod db;
pub mod models;
pub mod rss;
pub mod schema;
-pub mod clap;
use std::fs::File;
-use std::io::BufReader;
use std::io::BufRead;
+use std::io::BufReader;
fn main() -> anyhow::Result<()> {
use self::diesel::prelude::*;
// positional argument "urls_path" is required to be present
let urls_path = matches.value_of("urls_path").unwrap();
// urls_path is required to be a present file by clap
- let urls = BufReader::new(File::open(urls_path).unwrap()).lines().map(|l| l.unwrap());
+ let urls = BufReader::new(File::open(urls_path).unwrap())
+ .lines()
+ .map(|l| l.unwrap());
let conn = db::establish_connection()?;
Ok(())
}
+
+fn send_posts(posts: &Vec<models::Post>) {
+ // TODO: store smtp values (username, password, smtp server) and create smtp client to send
+ // with
+ for post in posts {}
+}
blob - 172c26b3b262d7e6a744518b77d04c509e6bedf0
blob + 52903660f78d83ec81015281338c89ae1ba63af2
--- src/rss.rs
+++ src/rss.rs
-use rss;
use reqwest;
+use rss;
pub fn fetch_new<S: AsRef<str>>(url: S) -> anyhow::Result<rss::Channel> {
let content = reqwest::blocking::get(url.as_ref())?.bytes()?;