cleanup, sync

This commit is contained in:
2023-09-27 19:01:50 +02:00
parent 43e5d473b7
commit 6822b5eab5
11 changed files with 74 additions and 198 deletions
+8 -8
View File
@@ -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(),
// }
// }
// }
+65 -6
View File
@@ -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::<Feed>(&mut connection).unwrap();
let feed: Vec<Feed> = feed::table.load::<Feed>(&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> = feed::table.load::<Feed>(&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<Article> = 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("<img") {
// content.push_str(&element.html());
// content.push_str("<br>")
// }
// }
// 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()
// }