From 6822b5eab53c3309d93b491399df368f084cf6be Mon Sep 17 00:00:00 2001 From: mace Date: Wed, 27 Sep 2023 19:01:50 +0200 Subject: [PATCH] cleanup, sync --- css/base.css | 36 ----------------- css/main.css | 37 ----------------- src/models/feed/rss_feed.rs | 2 +- src/reader/structs/article.rs | 16 ++++---- src/reader/sync.rs | 71 ++++++++++++++++++++++++++++++--- src/views/app/content_loader.rs | 23 ----------- src/views/app/login.rs | 17 -------- src/views/app/logout.rs | 15 ------- src/views/app/mod.rs | 35 ---------------- src/views/app/reader.rs | 18 --------- src/views/mod.rs | 2 - 11 files changed, 74 insertions(+), 198 deletions(-) delete mode 100755 css/base.css delete mode 100755 css/main.css delete mode 100755 src/views/app/content_loader.rs delete mode 100755 src/views/app/login.rs delete mode 100755 src/views/app/logout.rs delete mode 100755 src/views/app/mod.rs delete mode 100755 src/views/app/reader.rs diff --git a/css/base.css b/css/base.css deleted file mode 100755 index 16897ad..0000000 --- a/css/base.css +++ /dev/null @@ -1,36 +0,0 @@ -body { - background-color: #92a8d1; - font-family: Arial, Helvetica, sans-serif; - height: 100vh; -} -@media(max-width: 500px) { - body { - padding: 1px; - display: grid; - grid-template-columns: 1fr; - } - } -@media(min-width: 501px) and (max-width: 550px) { - body { - padding: 1px; - display: grid; - grid-template-columns: 1fr 5fr 1fr; - } - .mainContainer {grid-column-start: 2;} -} -@media(min-width: 551px) and (max-width: 1000px) { - body { - padding: 1px; - display: grid; - grid-template-columns: 1fr 3fr 1fr; - } - .mainContainer {grid-column-start: 2;} -} -@media(min-width: 1001px) { - body { - padding: 1px; - display: grid; - grid-template-columns: 1fr 1fr 1fr; - } - .mainContainer {grid-column-start: 2;} -} \ No newline at end of file diff --git a/css/main.css b/css/main.css deleted file mode 100755 index 21d3939..0000000 --- a/css/main.css +++ /dev/null @@ -1,37 +0,0 @@ -.itemContainer { - background: #034f84; - margin: 0.3rem; -} -.itemContainer:hover { - background: #034f99; -} -.itemContainer p { - color: white; - display: inline-block; - margin: 0.5rem; - margin-right: 0.4rem; - margin-left: 0.4rem; -} -.actionButton { - display: inline-block; - float: right; - background: #f7786b; - border: none; - padding: 0.5rem; - padding-left: 2rem; - padding-right: 2rem; - color: white; -} -.actionButton:hover { - background: #f7686b; - color: black; -} -.inputContainer { - background: #034f84; - margin: 0.3rem; - margin-top: 2rem; -} -.inputContainer input { - display: inline-block; - margin: 0.3rem - } \ No newline at end of file diff --git a/src/models/feed/rss_feed.rs b/src/models/feed/rss_feed.rs index 2e62bf9..fead698 100755 --- a/src/models/feed/rss_feed.rs +++ b/src/models/feed/rss_feed.rs @@ -2,7 +2,7 @@ use super::super::user::rss_user::User; use crate::schema::feed; use diesel::{Associations, Identifiable, Queryable}; -#[derive(Queryable, Identifiable, Associations)] +#[derive(Clone, Queryable, Identifiable, Associations)] #[diesel(belongs_to(User))] #[diesel(table_name=feed)] pub struct Feed { diff --git a/src/reader/structs/article.rs b/src/reader/structs/article.rs index d88d7c2..5ce5689 100644 --- a/src/reader/structs/article.rs +++ b/src/reader/structs/article.rs @@ -6,11 +6,11 @@ pub struct Article { pub content: String, } -impl Article { - pub fn new(title: &str, content: &str) -> Article { - Article { - title: title.to_string(), - content: content.to_string(), - } - } -} +// impl Article { +// pub fn new(title: &str, content: &str) -> Article { +// Article { +// title: title.to_string(), +// content: content.to_string(), +// } +// } +// } diff --git a/src/reader/sync.rs b/src/reader/sync.rs index 77b361a..1ac30c2 100644 --- a/src/reader/sync.rs +++ b/src/reader/sync.rs @@ -1,12 +1,71 @@ -use actix_web::{HttpRequest, Responder}; +use super::feeds; +use crate::{database::establish_connection, models::feed::rss_feed::Feed, schema::feed}; +use actix_web::{HttpRequest, HttpResponse, Responder}; use diesel::prelude::*; - -use crate::{database::establish_connection, schema::feed}; - -use super::structs::feed::Feed; +use futures::StreamExt; pub async fn sync(req: HttpRequest) -> impl Responder { let mut connection: diesel::PgConnection = establish_connection(); - let users = feed::table.load::(&mut connection).unwrap(); + let feed: Vec = feed::table.load::(&mut connection).unwrap(); + + // Create an asynchronous stream of Feed items + let feed_stream = futures::stream::iter(feed.clone().into_iter()).map(|feed| { + // Asynchronously fetch the feed_list for each feed + async move { + let feed_list = feeds::get_feed(&feed.url).await.unwrap(); + // Process feed_list here + } + }); + + // Execute the asynchronous stream + tokio::spawn(feed_stream.for_each(|_| async {})); + + HttpResponse::Ok() } +// pub async fn sync(req: HttpRequest) -> impl Responder { +// let request = req.clone(); +// let mut connection: diesel::PgConnection = establish_connection(); +// +// let feed: Vec = feed::table.load::(&mut connection).unwrap(); + +// let feed = feeds::get_feed("https://www.heise.de/rss/heise-Rubrik-Wissen.rdf").await.unwrap(); + +// let feed_title: String = feed.title.clone(); +// let feed_items: Vec
= feed +// .into_items() +// .into_iter() +// .map(|item| { +// let title = item.title.unwrap(); +// let frag = Html::parse_fragment(&item.content.unwrap()); +// let mut content = "".to_string(); +// let frag_clone = frag.clone(); +// frag.tree.into_iter().for_each(|node| { +// let selector_img = Selector::parse("img").unwrap(); +// +// for element in frag_clone.select(&selector_img) { +// if !content.starts_with("") +// } +// } +// if let scraper::node::Node::Text(text) = node { +// content.push_str(&text.text); +// } +// }); +// Article { title, content } +// }) +// .collect(); + +// let feed_stream = stream::iter(feed.iter().cloned()).map(|feed: Feed| { +// let feed_list = feeds::get_feed(&feed.url).await.unwrap(); +// // Process feed_list here +// }); +// +// tokio::spawn(feed_stream.for_each(|_| async {})); +// // let feed_list = feeds::get_feed(&feed.url).await.unwrap(); +// // feed.iter().for_each(|feed: &Feed| { +// // }); +// +// HttpResponse::Ok() +// } diff --git a/src/views/app/content_loader.rs b/src/views/app/content_loader.rs deleted file mode 100755 index f60e73f..0000000 --- a/src/views/app/content_loader.rs +++ /dev/null @@ -1,23 +0,0 @@ -use std::fs; - -pub fn read_file(file_path: &str) -> String { - let data: String = fs::read_to_string(file_path) - .expect(format!("Unable to read file {}", file_path).as_str()); - return data; -} - -pub fn add_component(component_tag: String, html_data: String) -> String { - let css_tag: String = component_tag.to_uppercase() + &String::from("_CSS"); - let html_tag: String = component_tag.to_uppercase() + &String::from("_HTML"); - let css_path = String::from("./templates/components/") - + &component_tag.to_lowercase() - + &String::from(".css"); - let css_loaded = read_file(&css_path); - let html_path = String::from("./templates/components/") - + &component_tag.to_lowercase() - + &String::from(".html"); - let html_loaded = read_file(&html_path); - let html_data = html_data.replace(html_tag.as_str(), &html_loaded); - let html_data = html_data.replace(css_tag.as_str(),&css_loaded); - return html_data -} \ No newline at end of file diff --git a/src/views/app/login.rs b/src/views/app/login.rs deleted file mode 100755 index d09273d..0000000 --- a/src/views/app/login.rs +++ /dev/null @@ -1,17 +0,0 @@ -use super::content_loader::read_file; -use actix_web::HttpResponse; - -pub async fn login() -> HttpResponse { - let mut html_data = read_file(&String::from("./templates/login.html")); - let javascript_data = read_file(&String::from("./javascript/login.js")); - let css_data = read_file(&String::from("./css/main.css")); - let base_css_data = read_file(&String::from("./css/base.css")); - - html_data = html_data.replace("{{JAVASCRIPT}}", &javascript_data); - html_data = html_data.replace("{{CSS}}", &css_data); - html_data = html_data.replace("{{BASE_CSS}}", &base_css_data); - - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(html_data) -} diff --git a/src/views/app/logout.rs b/src/views/app/logout.rs deleted file mode 100755 index e689d53..0000000 --- a/src/views/app/logout.rs +++ /dev/null @@ -1,15 +0,0 @@ -use actix_web::HttpResponse; - -pub async fn logout() -> HttpResponse { - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body( - "\ - \ - - ", - ) -} diff --git a/src/views/app/mod.rs b/src/views/app/mod.rs deleted file mode 100755 index e3b5cfe..0000000 --- a/src/views/app/mod.rs +++ /dev/null @@ -1,35 +0,0 @@ -use actix_web::web; -mod content_loader; -mod login; -mod logout; -mod reader; -use super::path::Path; - -/// This function adds the app views to the web server serving HTML. -/// -/// # Arguments -/// * (&mut web::ServiceConfig): reference to the app for configuration -/// -/// # Returns -/// None -pub fn app_factory(app: &mut web::ServiceConfig) { - // define the path struct - let base_path: Path = Path { - prefix: String::from("/"), - backend: false, - }; - // define the routes for the app - - app.route( - &base_path.define(String::from("")), - web::get().to(reader::reader), - ); - app.route( - &base_path.define(String::from("login")), - web::get().to(login::login), - ); - app.route( - &base_path.define(String::from("logout")), - web::get().to(logout::logout), - ); -} diff --git a/src/views/app/reader.rs b/src/views/app/reader.rs deleted file mode 100755 index f25f388..0000000 --- a/src/views/app/reader.rs +++ /dev/null @@ -1,18 +0,0 @@ -use super::content_loader::read_file; -use actix_web::HttpResponse; - -pub async fn reader() -> HttpResponse { - let mut html_data = read_file("./templates/reader.html"); - let javascript = read_file("./javascript/main.js"); - let css = read_file("./css/main.css"); - let base_css = read_file("./css/base.css"); - - html_data = html_data.replace("JAVASCRIPT", &javascript); - html_data = html_data.replace("CSS", &css); - html_data = html_data.replace("BASE_CSS", &base_css); - // html_data = add_component(String::from("header"), html_data); - - HttpResponse::Ok() - .content_type("text/html; charset=utf-8") - .body(html_data) -} diff --git a/src/views/mod.rs b/src/views/mod.rs index f11b7f2..7bdaf71 100755 --- a/src/views/mod.rs +++ b/src/views/mod.rs @@ -1,14 +1,12 @@ use actix_web::web; use crate::reader; -mod app; mod auth; pub(crate) mod path; mod users; pub fn views_factory(app: &mut web::ServiceConfig) { auth::auth_factory(app); - app::app_factory(app); users::user_factory(app); reader::feed_factory(app); }