From bce24919eb75a5d6b2f8882f837324cb01aaf56a Mon Sep 17 00:00:00 2001 From: Mylloon Date: Fri, 13 Jan 2023 19:23:01 +0100 Subject: [PATCH] fix login --- .gitignore | 2 -- src/marks.rs | 20 ++++++++------------ src/utils.rs | 20 ++++++++++++++++++++ 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/.gitignore b/.gitignore index 5fcb8fc..ea8c4bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1 @@ /target - -*.html diff --git a/src/marks.rs b/src/marks.rs index c28a6bb..434e793 100644 --- a/src/marks.rs +++ b/src/marks.rs @@ -1,22 +1,19 @@ use scraper::{Html, Selector}; -use std::io::Write; +use crate::utils::write_html; + +/// Retrieves marks for a user pub async fn get_marks(username: String, password: String, user_agent: &str) { // Login let client = login(username, password, user_agent).await.unwrap(); // Marks - let document = load_marks(&client).await.unwrap(); + let page = load_marks(&client).await.unwrap(); - // DEBUG - Output to temp.html - let mut f = std::fs::OpenOptions::new() - .write(true) - .open("./temp.html") - .unwrap(); - f.write_all(document.html().as_bytes()).unwrap(); - f.flush().unwrap(); + write_html(page.html()); } +/// Login to eP8 async fn login( username: String, password: String, @@ -54,7 +51,7 @@ async fn login( let params = [ ("username", username.as_str()), ("password", password.as_str()), - ("_eventID", "submit"), + ("_eventId", "submit"), ("submit", "SE CONNECTER"), ("lt", lt), ("execution", execution), @@ -72,14 +69,13 @@ async fn login( Ok(client) } +/// Load marks from scolarite-etudiant async fn load_marks(client: &reqwest::Client) -> Result> { let html = client .get("https://scolarite-etudiant.univ-paris8.fr/mondossierweb/#!notesView") .send() .await?; - println!("{:#?}", html); - let document = Html::parse_document(&html.text().await?); Ok(document) diff --git a/src/utils.rs b/src/utils.rs index d73d5db..3d6a656 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,5 +1,6 @@ use std::io::{self, Write}; +/// Ask user for something pub fn ask(text: &str) -> std::string::String { let mut user_input = String::new(); let stdin = io::stdin(); @@ -10,3 +11,22 @@ pub fn ask(text: &str) -> std::string::String { user_input.trim_end().to_string() } + +/// Write a document to a file +/// +/// `html_data` may be created with something like that: +/// ``` +/// Html::parse_document( +/// &client +/// .get("URL") +/// .send() +/// .await? +/// .text() +/// .await?, +/// ) +/// .html(), +/// ``` +pub fn write_html(html_data: String) { + let mut f = std::fs::File::create("./target/temp.html").unwrap(); + write!(&mut f, "{}", html_data).unwrap(); +}