diff options
| author | A Farzat <a@farzat.xyz> | 2026-02-10 18:58:29 +0300 |
|---|---|---|
| committer | A Farzat <a@farzat.xyz> | 2026-02-10 18:58:29 +0300 |
| commit | 2bf7a5ea9aa6eb5797ba224fcc2002425bc2d947 (patch) | |
| tree | ad3f180565fed5d3ef561ed367d7fd4a7ea98517 /src/main.rs | |
| parent | 639ddf4b2e88bdc95a9e09eadea1be606327dea5 (diff) | |
| download | safaribooks-rs-2bf7a5ea9aa6eb5797ba224fcc2002425bc2d947.tar.gz safaribooks-rs-2bf7a5ea9aa6eb5797ba224fcc2002425bc2d947.zip | |
Add a cookies module
This parses the cookies found in the cookies.json file, making them
ready to be used in http requests.
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index ad33122..e582af9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,9 +1,11 @@ mod cli; mod config; +mod cookies; mod display; use clap::Parser; use cli::Args; +use cookies::CookieStore; use display::Display; fn main() { @@ -11,15 +13,30 @@ fn main() { let mut ui = Display::new(&args.bookid); - let cookies = config::cookies_file(); - if !cookies.exists() { + let cookies_path = config::cookies_file(); + if !cookies_path.exists() { ui.error_and_exit( "cookies.json not found.\n\ This version requires an existing authenticated session.", ); } - ui.info(&format!("Using cookies file: {}", cookies.display())); + // Load cookies + let store = match CookieStore::load_from(&cookies_path) { + Ok(c) => c, + Err(e) => ui.error_and_exit(&format!("Failed to read cookies.json: {e}")), + }; + + if store.is_empty() { + ui.error_and_exit("cookies.json is valid JSON but contains no cookies."); + } + + let names = store.cookie_names(); + ui.info(&format!( + "Loaded {} cookies: {}", + store.len(), + names.join(", ") + )); let output_dir = config::books_root().join(format!("(pending) ({})", args.bookid)); |
