diff --git a/src/catalog.rs b/src/catalog.rs index 471280a..e0a5517 100644 --- a/src/catalog.rs +++ b/src/catalog.rs @@ -4,10 +4,16 @@ pub type Login<'a> = Option<(&'a str, &'a str)>; pub static ALIASES: &[(&str, CatalogDefinition)] = &[ ("DS_WS1617", ("16w-diskrete-strukturen", None)), - ("EIDI_WS1617", ("eidi1-2016", Some(("eidi-2016", "PGdP.16")))), + ( + "EIDI_WS1617", + ("eidi1-2016", Some(("eidi-2016", "PGdP.16"))), + ), ("ERA_WS1617", ("era-2016", None)), - ("GAD_SS17", ("17s-grundlagen-algorithmen-und-datenstrukturen", None)), + ( + "GAD_SS17", + ("17s-grundlagen-algorithmen-und-datenstrukturen", None), + ), ("LA_SS17", ("17s-lineare-algebra-fuer-informatik", None)), // EIST is on a Nextcloud ]; diff --git a/src/main.rs b/src/main.rs index c84c204..d4c6537 100644 --- a/src/main.rs +++ b/src/main.rs @@ -58,8 +58,8 @@ fn main() { Arg::with_name("CATALOG_NAME") .help( "name of the catalog e.g. from the URL:\n\ - https://streams.tum.de/Mediasite/Catalog/catalogs/era-2016 -> era-2016\n\ - special cases (WS16/17; login included): DS, EIDI, ERA, ...", + https://streams.tum.de/Mediasite/Catalog/catalogs/era-2016 -> era-2016\n\ + special cases (WS16/17; login included): DS, EIDI, ERA, ...", ) .required(true) .index(1), @@ -144,10 +144,12 @@ fn get_auth() { let res = try_to_get_valid_response( |client| { - let mut request_builder = client.post("https://streams.tum.de/Mediasite/Login").unwrap(); - request_builder.form( - &form_data, - ).expect("Failed to serialize form_data!"); + let mut request_builder = client + .post("https://streams.tum.de/Mediasite/Login") + .unwrap(); + request_builder + .form(&form_data) + .expect("Failed to serialize form_data!"); request_builder }, |res| res.headers().get::().is_some(), @@ -218,7 +220,7 @@ fn get_catalog_id(name: &str) -> String { let prefix = "CatalogId: '"; let idx = body.find(prefix).expect( "Failed to find CatalogId on the catalog page! Perhaps you got the wrong catalog \ - name or an invalid login? Maybe you need to open the page in a browser once...", + name or an invalid login? Maybe you need to open the page in a browser once...", ); let pre_len = prefix.len(); // Assuming all catalog ids follow this pattern! @@ -251,9 +253,12 @@ fn get_json(catalog_id: &str) -> String { let mut request_builder = client .post( "https://streams.tum.de/Mediasite/Catalog/Data/GetPresentationsForFolder", - ).unwrap(); - request_builder.header(construct_cookie()) - .json(&data).expect("Failed to serialize json!"); + ) + .unwrap(); + request_builder + .header(construct_cookie()) + .json(&data) + .expect("Failed to serialize json!"); request_builder }); read_response_body(&mut res) @@ -302,8 +307,8 @@ where fn read_response_body(response: &mut Response) -> String { let mut string = String::new(); - response.read_to_string(&mut string).expect( - "Failed to read body", - ); + response + .read_to_string(&mut string) + .expect("Failed to read body"); string } diff --git a/src/presentation.rs b/src/presentation.rs index 8d5009f..53de696 100644 --- a/src/presentation.rs +++ b/src/presentation.rs @@ -56,7 +56,9 @@ impl Presentation { } match *self { - Presentation::PublishToGo { ref download_url, .. } => { + Presentation::PublishToGo { + ref download_url, .. + } => { let response_res = try_to_get_valid_response( |client| { let mut request_builder = client.get(download_url).unwrap(); @@ -82,9 +84,10 @@ impl Presentation { match *param { DispositionParam::Filename(ref charset, _, ref vec) => { assert_eq!(&Charset::Ext("UTF-8".to_string()), charset); - name = Some(String::from_utf8(vec.to_vec()).expect( - "Suggested filename isn't valid UTF-8!", - )); + name = Some( + String::from_utf8(vec.to_vec()) + .expect("Suggested filename isn't valid UTF-8!"), + ); } _ => continue, } @@ -106,9 +109,9 @@ impl Presentation { let videos = { let payload = format!( "{{\"getPlayerOptionsRequest\":{{\ - \"ResourceId\":\"{}\",\ - \"QueryString\":\"{}\"\ - }}}}", + \"ResourceId\":\"{}\",\ + \"QueryString\":\"{}\"\ + }}}}", resource_id, query_string ); @@ -117,9 +120,10 @@ impl Presentation { PlayerService.svc/json/GetPlayerOptions"; let mut res = try_to_get_response(|client| { let mut request_builder = client.post(url).unwrap(); - request_builder.header(construct_cookie()) - .header(ContentType::json()) - .body(payload.to_string()); + request_builder + .header(construct_cookie()) + .header(ContentType::json()) + .body(payload.to_string()); request_builder }); @@ -170,9 +174,10 @@ impl<'a> From<&'a JsonValue> for Presentation { if json["DownloadUrls"].len() >= 1 { assert_eq!(json["DownloadUrls"].len(), 1); Presentation::PublishToGo { - name: json["Name"].clone().take_string().expect( - "json: Presentation didn't contain a \"Name\"!", - ), + name: json["Name"] + .clone() + .take_string() + .expect("json: Presentation didn't contain a \"Name\"!"), download_url: json["DownloadUrls"][0]["Url"] .clone() .take_string() @@ -187,9 +192,10 @@ impl<'a> From<&'a JsonValue> for Presentation { let index_start_resource = index - "cdf23465581b45aa92d588ebd59619d91d".len(); Presentation::VideoOnDemand { - name: json["Name"].clone().take_string().expect( - "json: Presentation didn't contain a \"Name\"!", - ), + name: json["Name"] + .clone() + .take_string() + .expect("json: Presentation didn't contain a \"Name\"!"), query_string: player_url[index..index_end_query].to_string(), resource_id: player_url[index_start_resource..index].to_string(), } @@ -215,9 +221,8 @@ fn download_to_file(response: &mut Response, path: &Path) -> Result<(), io::Erro Err(e) => return Err(e), }; - file.write_all(&buf[0..len]).expect( - "Failed writing into the file!", - ); + file.write_all(&buf[0..len]) + .expect("Failed writing into the file!"); done += len; let now = Instant::now(); @@ -227,9 +232,9 @@ fn download_to_file(response: &mut Response, path: &Path) -> Result<(), io::Erro 2, done as f64 * 1000.0 / update_duration_millis as f64 / 1024.0 ); - ::std::io::stdout().flush().expect( - "Failed flushing the terminal!", - ); + ::std::io::stdout() + .flush() + .expect("Failed flushing the terminal!"); last = now; done = 0; } @@ -276,7 +281,7 @@ fn check_video(path: &Path) -> bool { Err(_) => { println!( "Failed to check {} with ffmpeg. Perhaps ffmpeg isn't in your path. \ - Skipping check...", + Skipping check...", path.display() ); true