wiki in extra datei + get_tuesdays wurde general purpose
This commit is contained in:
		
							parent
							
								
									78c23531ab
								
							
						
					
					
						commit
						9db5955c1b
					
				
					 2 changed files with 46 additions and 68 deletions
				
			
		
							
								
								
									
										61
									
								
								src/main.rs
									
										
									
									
									
								
							
							
						
						
									
										61
									
								
								src/main.rs
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -112,12 +112,12 @@ async fn main() -> Result<(), Box<dyn Error>> {
 | 
			
		|||
    config.dump_redacting(&["email-password","wiki-password","matrix-password"]).ok();
 | 
			
		||||
 | 
			
		||||
    // 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 vierter_dienstag: String = all_tuesdays[3].to_string(); // z.B. 2024-07-23
 | 
			
		||||
 | 
			
		||||
    //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 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(()) }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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 = match month_offset.signum() {
 | 
			
		||||
        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 dates = Vec::new();
 | 
			
		||||
    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);
 | 
			
		||||
        }
 | 
			
		||||
        current_date = date.succ_opt();
 | 
			
		||||
| 
						 | 
				
			
			@ -407,57 +407,4 @@ fn try_to_remove_top_instructions (pad_content: String) -> String {
 | 
			
		|||
    let re_top_instructions: Regex = Regex::new(r"(<!--(?:.||\n)*-->)").unwrap();
 | 
			
		||||
    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
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
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"))
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,17 +1,9 @@
 | 
			
		|||
use pandoc::{MarkdownExtension, Pandoc, PandocError, PandocOutput};
 | 
			
		||||
use std::io::prelude::*;
 | 
			
		||||
use std::error::Error;
 | 
			
		||||
use std::fs::File;
 | 
			
		||||
use std::io::Read;
 | 
			
		||||
 | 
			
		||||
pub fn pad_ins_wiki(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_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");
 | 
			
		||||
    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!");
 | 
			
		||||
| 
						 | 
				
			
			@ -21,5 +13,44 @@ pub fn pad_ins_wiki(old_pad_content: String) {
 | 
			
		|||
    // 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"))
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue