diff --git a/.gitignore b/.gitignore index 15782d9..8fb9684 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ /.idea plenum_config.sqlite .direnv -shell.nix \ No newline at end of file +shell.nix +pandoc-output.txt \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index ddcd8b1..92d346c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -33,7 +33,12 @@ use uuid::Uuid; use reqwest::Client; use std::error::Error; // use std::future::Future; + +// For MediaWiki-conversion use pandoc; +use std::io; +use std::io::prelude::*; +use std::fs::File; // use std::process::Command; // use headers::ContentType; @@ -42,6 +47,7 @@ use pandoc; use lettre::{Message, SmtpTransport, Transport}; use lettre::message::{header, SinglePart}; use lettre::transport::smtp::authentication::Credentials; +use pandoc::{MarkdownExtension, Pandoc, PandocError, PandocOutput}; // MAIL END #[derive(PartialEq)] @@ -130,7 +136,7 @@ async fn main() -> Result<(), Box> { // let in_3_days_is_plenum = true; let top_anzahl: i32 = 0; // Muss noch gecodet werden - let in_1_day_is_plenum = true; + let yesterday_was_plenum = true; // Das ist nur zu Testzwecken, kommt noch weg if in_1_day_is_plenum { println!("In 1 Tag ist Plenum, deshalb wird eine Erinnerung raus geschickt!"); let pad_content = download_and_return_pad(format!("{}/download", current_pad_link.clone())).await.expect("Fehler beim Download des Pads!"); @@ -171,7 +177,7 @@ async fn main() -> Result<(), Box> { } else if yesterday_was_plenum { // This logic breaks on 02/2034, but on every other month it works let old_pad_content = download_and_return_pad(format!("{}/download", current_pad_link.clone())).await.expect("Fehler beim Download des Pads!"); - generate_new_pad_for_following_date(übernächster_plenumtermin, überübernächster_plenumtermin, &config).await.expect("Fehler! Plenumspad konnte nicht generiert werden!"); + // MUSS WIEDER REIN NACH DEM TESTEN: generate_new_pad_for_following_date(übernächster_plenumtermin, überübernächster_plenumtermin, &config).await.expect("Fehler! Plenumspad konnte nicht generiert werden!"); println!("DATENBANK: aktuelles-plenumspad: {:?} und zukünftiges plenumspad: {:?}", &config.get("aktuelles-plenumspad"), &config.get("zukünftiges-plenumspad")); let old_pad_content_without_top_instructions = try_to_remove_top_instructions(old_pad_content); @@ -343,7 +349,23 @@ fn try_to_remove_top_instructions (pad_content: String) -> String { fn pad_ins_wiki(old_pad_content: String) { //Convert Markdown into Mediawiki - - let pandoc_parsed = old_pad_content; // MUSS GEÄNDERT WERDEN - + // Vanilla pandoc Befehl: pandoc --from markdown --to mediawiki --no-highlight + let mut p = pandoc::new(); + p.set_input(pandoc::InputKind::Pipe(old_pad_content)); + p.set_input_format(pandoc::InputFormat::Markdown, vec![]); + // p.set_output_format(Pandoc::OutputFormat::mediawiki, vec![MarkdownExtension::Smart]); + p.set_output(pandoc::OutputKind::File("./pandoc-output.txt".parse().unwrap())); + p.set_output_format(pandoc::OutputFormat::MediaWiki, vec![]); + p.execute().expect("Fehler beim Umwandeln des und speichern des Pads in eine mediawiki-Textdatei"); + + // Textdatei wieder einlesen + let mut file = File::open("pandoc-output.txt").expect("Fehler beim öffnen der MediaWiki-Textdatei!"); + let mut contents = String::new(); + file.read_to_string(&mut contents).expect("Fehler beim auslesen der MediaWiki-Textdatei!"); + + // Passwörter aus Datenbank lesen (ToBeDone) + let plenum_bot_user = String::from("PlenumBot@PlenumBot-PW1"); + let plenum_bot_pw = String::from("**OLD_API_PW_REMOVED**"); + + }