diff --git a/backend/Cargo.lock b/backend/Cargo.lock index df72141..bfcd1e4 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -158,7 +158,6 @@ dependencies = [ "isahc", "lazy_static", "log", - "once_cell", "regex", "reqwest", "rocket", @@ -347,9 +346,9 @@ dependencies = [ [[package]] name = "cookie" -version = "0.17.0" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7efb37c3e1ccb1ff97164ad95ac1606e8ccd35b3fa0a7d99a304c7f4a428cc24" +checksum = "3cd91cf61412820176e137621345ee43b3f4423e589e7ae4e50d601d93e35ef8" dependencies = [ "percent-encoding", "time 0.3.27", @@ -1319,7 +1318,6 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", - "serde", ] [[package]] @@ -1330,6 +1328,7 @@ checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" dependencies = [ "equivalent", "hashbrown 0.14.0", + "serde", ] [[package]] @@ -1933,7 +1932,7 @@ checksum = "61a386cd715229d399604b50d1361683fe687066f42d56f54be995bc6868f71c" dependencies = [ "inlinable_string", "pear_codegen", - "yansi 1.0.0-rc.1", + "yansi", ] [[package]] @@ -2162,7 +2161,7 @@ dependencies = [ "quote", "syn 2.0.29", "version_check", - "yansi 1.0.0-rc.1", + "yansi", ] [[package]] @@ -2456,9 +2455,9 @@ dependencies = [ [[package]] name = "rocket" -version = "0.5.0-rc.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58734f7401ae5cfd129685b48f61182331745b357b96f2367f01aebaf1cc9cc9" +checksum = "9e7bb57ccb26670d73b6a47396c83139447b9e7878cab627fdfe9ea8da489150" dependencies = [ "async-stream", "async-trait", @@ -2468,8 +2467,7 @@ dependencies = [ "either", "figment", "futures", - "indexmap 1.9.3", - "is-terminal", + "indexmap 2.0.0", "log", "memchr", "multer", @@ -2492,37 +2490,38 @@ dependencies = [ "ubyte", "uuid", "version_check", - "yansi 0.5.1", + "yansi", ] [[package]] name = "rocket_codegen" -version = "0.5.0-rc.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7093353f14228c744982e409259fb54878ba9563d08214f2d880d59ff2fc508b" +checksum = "a2238066abf75f21be6cd7dc1a09d5414a671f4246e384e49fe3f8a4936bd04c" dependencies = [ "devise", "glob", - "indexmap 1.9.3", + "indexmap 2.0.0", "proc-macro2", "quote", "rocket_http", "syn 2.0.29", "unicode-xid", + "version_check", ] [[package]] name = "rocket_http" -version = "0.5.0-rc.3" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936012c99162a03a67f37f9836d5f938f662e26f2717809761a9ac46432090f4" +checksum = "37a1663694d059fe5f943ea5481363e48050acedd241d46deb2e27f71110389e" dependencies = [ - "cookie 0.17.0", + "cookie 0.18.0", "either", "futures", "http", "hyper", - "indexmap 1.9.3", + "indexmap 2.0.0", "log", "memchr", "pear", @@ -3183,9 +3182,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "state" -version = "0.5.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" +checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" dependencies = [ "loom", ] @@ -3962,17 +3961,14 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "yansi" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" - [[package]] name = "yansi" version = "1.0.0-rc.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1367295b8f788d371ce2dbc842c7b709c73ee1364d30351dd300ec2203b12377" +dependencies = [ + "is-terminal", +] [[package]] name = "zeroize" diff --git a/backend/Cargo.toml b/backend/Cargo.toml index 68783bf..96ba416 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] reqwest = { version = "0.11", features = ["json", "cookies"] } -rocket = { version = "=0.5.0-rc.3" , features = ["json", "msgpack", "uuid"] } +rocket = { version = "0.5.0" , features = ["json", "msgpack", "uuid"] } sqlx = { version = "0.7.1", features = [ "runtime-tokio", "tls-rustls", "mysql", "macros", "chrono" ] } dotenvy = "0.15.7" serde = "1.0.188" @@ -16,7 +16,6 @@ scraper = "0.17.1" isahc = { version = "1.7.2", features = ["cookies"] } urlencoding = "2.1.3" lazy_static = "1.4.0" -once_cell = "1.18.0" log = "0.4.20" env_logger = "0.10.0" bardecoder = "0.5.0" diff --git a/backend/src/main.rs b/backend/src/main.rs index 9da8eb5..af3840e 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -1,9 +1,6 @@ use cors::Cors; -use once_cell::sync::OnceCell; use sqlx::Connection; -use sqlx::MySql; use sqlx::MySqlConnection; -use sqlx::Pool; use std::env; use std::time::Instant; @@ -17,8 +14,6 @@ mod online_classroom; pub mod json_result; -static DB: OnceCell> = OnceCell::new(); - /// Opens & returns a connection to the database /// /// We don't use a connection pool because on some days, on the afternoon, diff --git a/backend/src/model/course.rs b/backend/src/model/course.rs index deffbfb..b61aeaa 100644 --- a/backend/src/model/course.rs +++ b/backend/src/model/course.rs @@ -35,7 +35,9 @@ impl Course { } }; - let results = sqlx::query!("SELECT * FROM course").fetch_all(&mut db).await; + let results = sqlx::query!("SELECT * FROM course") + .fetch_all(&mut db) + .await; let results = match results { Ok(res) => res, diff --git a/backend/src/online_classroom/session.rs b/backend/src/online_classroom/session.rs index ef4878f..47e0fde 100644 --- a/backend/src/online_classroom/session.rs +++ b/backend/src/online_classroom/session.rs @@ -103,6 +103,9 @@ pub async fn request(url: String) -> Result { // Get the stored client let jar = SESSION_COOKIE.read().unwrap().jar.clone(); + log::info!("Classroom request: url: {}", url); + log::info!("Classroom request: cookie jar: {:?}", jar); + let uri = format!("{}{}", classroom_url, url); // Do the request @@ -252,11 +255,23 @@ async fn login() -> Result<(), String> { match response { Ok(mut r) => { if r.status() == isahc::http::StatusCode::FOUND { - // TODO: Even if this is a 302, it might not be a successful login + let html = match r.text() { + Ok(t) => t, + Err(err) => { + return Err(format!("Error getting text from login response: {:?}", err)) + } + }; + log::info!("classroom login: 302 response."); + log_html(&html); + + log::info!("classroom login cookies: {:?}", jar); + // check Set-Cookie header SESSION_COOKIE.write().unwrap().jar = jar.clone(); Ok(()) } else { + log::info!("classroom login: not 302"); + // Write html to file match r.text() { Ok(t) => { diff --git a/frontend/.gitignore b/frontend/.gitignore index 76add87..3a8095d 100644 --- a/frontend/.gitignore +++ b/frontend/.gitignore @@ -1,2 +1,3 @@ node_modules -dist \ No newline at end of file +dist +.directory