wiki in extra datei + get_tuesdays wurde general purpose

This commit is contained in:
murmeldin 2024-08-02 21:19:54 +02:00 committed by murmeldin
parent 78c23531ab
commit 9db5955c1b
2 changed files with 46 additions and 68 deletions

View file

@ -112,12 +112,12 @@ async fn main() -> Result<(), Box<dyn Error>> {
config.dump_redacting(&["email-password","wiki-password","matrix-password"]).ok(); config.dump_redacting(&["email-password","wiki-password","matrix-password"]).ok();
// Dienstage diesen Monat // Dienstage diesen Monat
let all_tuesdays: Vec<NaiveDate> = get_tuesdays(0); let all_tuesdays: Vec<NaiveDate> = get_all_weekdays(0, Weekday::Tue);
let zweiter_dienstag: String = all_tuesdays[1].to_string(); // z.B. 2024-07-09 let zweiter_dienstag: String = all_tuesdays[1].to_string(); // z.B. 2024-07-09
let vierter_dienstag: String = all_tuesdays[3].to_string(); // z.B. 2024-07-23 let vierter_dienstag: String = all_tuesdays[3].to_string(); // z.B. 2024-07-23
//Dienstage des nächsten Monats definieren //Dienstage des nächsten Monats definieren
let all_tuesdays_next_month: Vec<NaiveDate> = get_tuesdays(1); let all_tuesdays_next_month: Vec<NaiveDate> = get_all_weekdays(1, Weekday::Tue);
let zweiter_dienstag_nächster_monat: String = all_tuesdays_next_month[1].to_string(); let zweiter_dienstag_nächster_monat: String = all_tuesdays_next_month[1].to_string();
let vierter_dienstag_nächster_monat: String = all_tuesdays_next_month[3].to_string(); let vierter_dienstag_nächster_monat: String = all_tuesdays_next_month[3].to_string();
@ -269,7 +269,7 @@ Und hier ist das Protokoll des letzten Plenums:
if config.has_errors() { Err("There were errors.".into()) } else { Ok(()) } if config.has_errors() { Err("There were errors.".into()) } else { Ok(()) }
} }
fn get_tuesdays(month_offset: i32) -> Vec<NaiveDate>{ fn get_all_weekdays(month_offset: i32, week_day: Weekday) -> Vec<NaiveDate>{
let date = Local::now().date_naive(); let date = Local::now().date_naive();
let date = match month_offset.signum() { let date = match month_offset.signum() {
0 => Some(date), 0 => Some(date),
@ -281,7 +281,7 @@ fn get_tuesdays(month_offset: i32) -> Vec<NaiveDate>{
let mut current_date = NaiveDate::from_ymd_opt(date.year(), date.month(), 1); let mut current_date = NaiveDate::from_ymd_opt(date.year(), date.month(), 1);
let mut dates = Vec::new(); let mut dates = Vec::new();
while let Some(date) = current_date { while let Some(date) = current_date {
if date.month() == month && date.weekday() == Weekday::Tue { if date.month() == month && date.weekday() == week_day {
dates.push(date); dates.push(date);
} }
current_date = date.succ_opt(); current_date = date.succ_opt();
@ -408,56 +408,3 @@ fn try_to_remove_top_instructions (pad_content: String) -> String {
let result: Cow<str> = re_top_instructions.replace_all(&pad_content, "---"); let result: Cow<str> = re_top_instructions.replace_all(&pad_content, "---");
result.to_string() // Wenn es nicht geklappt hat, wird einfach das Pad mit dem Kommentar zurückgegeben result.to_string() // Wenn es nicht geklappt hat, wird einfach das Pad mit dem Kommentar zurückgegeben
} }
fn pad_ins_wiki(old_pad_content: String) {
convert_markdown_to_mediawiki_and_save_as_txt(old_pad_content);
// 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**");
let login_token = login_to_mediawiki(plenum_bot_user.clone(), plenum_bot_pw.clone()).expect("Fehler beim Einloggen!");
println!("plenum_bot_user: {plenum_bot_user}, plenum_bot_pw: {plenum_bot_pw}, login_token: {login_token}")
}
fn convert_markdown_to_mediawiki_and_save_as_txt (old_pad_content: String) {
//Convert Markdown into Mediawiki
// 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(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");
}
fn login_to_mediawiki (plenum_bot_user: String, plenum_bot_pw: String) -> Result<String, Box<dyn Error>> {
//let mut map = HashMap::new();
//map.insert("logintoken", "result");
let username = "cccb-wiki";
let password = "**OLD_PW_REMOVED**";
let auth_header_value = format!("{}:{}", username, password);
// let auth_header_value = format!("Basic {}", Engine::encode(&auth_value, ()));
/* NOCH NICHT GEFIXT
let client = reqwest::blocking::Client::new();
let resp = client
.get("https://wiki.berlin.ccc.de/api.php?action=query&meta=tokens&type=login&format=json")
.send()?
.text()?;
//let response = client
// .post("https://wiki.berlin.ccc.de/api.php?action=query&meta=tokens&type=login&format=json")
// .form(&[("Username", "cccb-wiki"), ("Password", "**OLD_PW_REMOVED**")])
// .send()
// .unwrap();
//.json(&map);
let html_source = resp.text()?;
//let login_token: String = map.get("logintoken").unwrap().to_string().clone();
println!("---HTML:---\n{}\n-----------", html_source);
*/
Ok(String::from("unimplemented"))
}

View file

@ -1,17 +1,9 @@
use pandoc::{MarkdownExtension, Pandoc, PandocError, PandocOutput}; use std::error::Error;
use std::io::prelude::*;
use std::fs::File; use std::fs::File;
use std::io::Read;
pub fn pad_ins_wiki(old_pad_content: String) { pub fn pad_ins_wiki(old_pad_content: String) {
//Convert Markdown into Mediawiki convert_markdown_to_mediawiki_and_save_as_txt(old_pad_content);
// 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 // Textdatei wieder einlesen
let mut file = File::open("pandoc-output.txt").expect("Fehler beim öffnen der MediaWiki-Textdatei!"); let mut file = File::open("pandoc-output.txt").expect("Fehler beim öffnen der MediaWiki-Textdatei!");
@ -21,5 +13,44 @@ pub fn pad_ins_wiki(old_pad_content: String) {
// Passwörter aus Datenbank lesen (ToBeDone) // Passwörter aus Datenbank lesen (ToBeDone)
let plenum_bot_user = String::from("PlenumBot@PlenumBot-PW1"); let plenum_bot_user = String::from("PlenumBot@PlenumBot-PW1");
let plenum_bot_pw = String::from("**OLD_API_PW_REMOVED**"); let plenum_bot_pw = String::from("**OLD_API_PW_REMOVED**");
let login_token = login_to_mediawiki(plenum_bot_user.clone(), plenum_bot_pw.clone()).expect("Fehler beim Einloggen!");
println!("plenum_bot_user: {plenum_bot_user}, plenum_bot_pw: {plenum_bot_pw}, login_token: {login_token}")
}
fn convert_markdown_to_mediawiki_and_save_as_txt (old_pad_content: String) {
//Convert Markdown into Mediawiki
// 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(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");
}
fn login_to_mediawiki (plenum_bot_user: String, plenum_bot_pw: String) -> Result<String, Box<dyn Error>> {
//let mut map = HashMap::new();
//map.insert("logintoken", "result");
let username = "cccb-wiki";
let password = "**OLD_PW_REMOVED**";
let auth_header_value = format!("{}:{}", username, password);
// let auth_header_value = format!("Basic {}", Engine::encode(&auth_value, ()));
/* NOCH NICHT GEFIXT
let client = reqwest::blocking::Client::new();
let resp = client
.get("https://wiki.berlin.ccc.de/api.php?action=query&meta=tokens&type=login&format=json")
.send()?
.text()?;
//let response = client
// .post("https://wiki.berlin.ccc.de/api.php?action=query&meta=tokens&type=login&format=json")
// .form(&[("Username", "cccb-wiki"), ("Password", "**OLD_PW_REMOVED**")])
// .send()
// .unwrap();
//.json(&map);
let html_source = resp.text()?;
//let login_token: String = map.get("logintoken").unwrap().to_string().clone();
println!("---HTML:---\n{}\n-----------", html_source);
*/
Ok(String::from("unimplemented"))
} }