diff options
Diffstat (limited to 'fatcat-cli')
-rw-r--r-- | fatcat-cli/Cargo.toml | 2 | ||||
-rw-r--r-- | fatcat-cli/src/lib.rs | 29 |
2 files changed, 15 insertions, 16 deletions
diff --git a/fatcat-cli/Cargo.toml b/fatcat-cli/Cargo.toml index c2b258a..6e24c7c 100644 --- a/fatcat-cli/Cargo.toml +++ b/fatcat-cli/Cargo.toml @@ -16,7 +16,7 @@ categories = ["command-line-utilities"] [dependencies] data-encoding = "2.1" fatcat-openapi = { version = "*", path = "../fatcat-openapi", default-features = false, features = ["client"] } -macaroon = { git = "https://github.com/bnewbold/libmacaroon-rs", branch = "bnewbold-broken" } +macaroon = "0.2" toml = "0.5" termcolor = "1" colored_json = "*" diff --git a/fatcat-cli/src/lib.rs b/fatcat-cli/src/lib.rs index ab63ec7..6c1f449 100644 --- a/fatcat-cli/src/lib.rs +++ b/fatcat-cli/src/lib.rs @@ -1,6 +1,6 @@ use anyhow::{anyhow, Context, Result}; use data_encoding::BASE64; -use macaroon::{Macaroon, Verifier}; +use macaroon::{Caveat, Macaroon, Verifier}; use std::path::PathBuf; use std::str::FromStr; @@ -87,28 +87,27 @@ pub fn parse_macaroon_editor_id(s: &str) -> Result<String> { .context("macaroon parsing failed")?; let mac = Macaroon::deserialize(&raw) .map_err(|err| anyhow!("macaroon deserialization failed: {:?}", err))?; - let mac = mac - .validate() - .map_err(|err| anyhow!("macaroon validation failed: {:?}", err))?; - let mut verifier = Verifier::new(); + let mut verifier = Verifier::default(); let mut editor_id: Option<String> = None; for caveat in mac.first_party_caveats() { - if caveat.predicate().starts_with("editor_id = ") { - editor_id = Some( - caveat - .predicate() - .get(12..) - .context("parsing macaroon")? - .to_string(), - ); - break; + if let Caveat::FirstParty(fp) = caveat { + let predicate_str = String::from_utf8(fp.predicate().as_ref().to_vec())?; + if predicate_str.starts_with("editor_id = ") { + editor_id = Some( + predicate_str + .get(12..) + .context("parsing macaroon")? + .to_string(), + ); + break; + } } } let editor_id = match editor_id { Some(id) => id, None => return Err(anyhow!("expected an editor_id caveat in macaroon token")), }; - verifier.satisfy_exact(&format!("editor_id = {}", editor_id)); + verifier.satisfy_exact(format!("editor_id = {}", editor_id).into()); Ok(editor_id) } |