aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorA Farzat <a@farzat.xyz>2026-02-10 18:58:29 +0300
committerA Farzat <a@farzat.xyz>2026-02-10 18:58:29 +0300
commit2bf7a5ea9aa6eb5797ba224fcc2002425bc2d947 (patch)
treead3f180565fed5d3ef561ed367d7fd4a7ea98517 /src/main.rs
parent639ddf4b2e88bdc95a9e09eadea1be606327dea5 (diff)
downloadsafaribooks-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.rs23
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));