From 52437e4298210b867dc9b0427fffb55f48fe3fe0 Mon Sep 17 00:00:00 2001 From: Alex Auvolat Date: Thu, 17 Apr 2025 12:14:51 +0200 Subject: [PATCH] refactor parsing of --expires-in --- src/garage/cli/remote/admin_token.rs | 17 +++-------------- src/garage/cli/remote/key.rs | 16 +++------------- src/garage/cli/remote/mod.rs | 10 ++++++++++ 3 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/garage/cli/remote/admin_token.rs b/src/garage/cli/remote/admin_token.rs index 83050c92..6b2bd67e 100644 --- a/src/garage/cli/remote/admin_token.rs +++ b/src/garage/cli/remote/admin_token.rs @@ -1,6 +1,6 @@ use format_table::format_table; -use chrono::{Local, Utc}; +use chrono::Local; use garage_util::error::*; @@ -78,16 +78,10 @@ impl Cli { } pub async fn cmd_create_admin_token(&self, opt: AdminTokenCreateOp) -> Result<(), Error> { - // TODO let res = self .api_request(CreateAdminTokenRequest(UpdateAdminTokenRequestBody { name: opt.name, - expiration: opt - .expires_in - .map(|x| parse_duration::parse::parse(&x)) - .transpose() - .ok_or_message("Invalid duration passed for --expires-in parameter")? - .map(|dur| Utc::now() + dur), + expiration: parse_expires_in(&opt.expires_in)?, never_expires: false, scope: opt.scope.map(|s| { s.split(",") @@ -146,12 +140,7 @@ impl Cli { id: token.id.unwrap(), body: UpdateAdminTokenRequestBody { name: None, - expiration: opt - .expires_in - .map(|x| parse_duration::parse::parse(&x)) - .transpose() - .ok_or_message("Invalid duration passed for --expires-in parameter")? - .map(|dur| Utc::now() + dur), + expiration: parse_expires_in(&opt.expires_in)?, never_expires: opt.never_expires, scope: opt.scope.map({ let mut new_scope = token.scope; diff --git a/src/garage/cli/remote/key.rs b/src/garage/cli/remote/key.rs index 67df9c48..f448bb17 100644 --- a/src/garage/cli/remote/key.rs +++ b/src/garage/cli/remote/key.rs @@ -1,6 +1,6 @@ use format_table::format_table; -use chrono::{Local, Utc}; +use chrono::Local; use garage_util::error::*; @@ -72,12 +72,7 @@ impl Cli { let key = self .api_request(CreateKeyRequest(UpdateKeyRequestBody { name: Some(opt.name), - expiration: opt - .expires_in - .map(|x| parse_duration::parse::parse(&x)) - .transpose() - .ok_or_message("Invalid duration passed for --expires-in parameter")? - .map(|dur| Utc::now() + dur), + expiration: parse_expires_in(&opt.expires_in)?, never_expires: false, allow: None, deny: None, @@ -130,12 +125,7 @@ impl Cli { id: key.access_key_id, body: UpdateKeyRequestBody { name: None, - expiration: opt - .expires_in - .map(|x| parse_duration::parse::parse(&x)) - .transpose() - .ok_or_message("Invalid duration passed for --expires-in parameter")? - .map(|dur| Utc::now() + dur), + expiration: parse_expires_in(&opt.expires_in)?, never_expires: opt.never_expires, allow: None, deny: None, diff --git a/src/garage/cli/remote/mod.rs b/src/garage/cli/remote/mod.rs index af79157c..31cbdc6e 100644 --- a/src/garage/cli/remote/mod.rs +++ b/src/garage/cli/remote/mod.rs @@ -12,6 +12,8 @@ use std::convert::TryFrom; use std::sync::Arc; use std::time::Duration; +use chrono::{DateTime, Utc}; + use garage_util::error::*; use garage_rpc::*; @@ -162,3 +164,11 @@ pub fn table_list_abbr, S: AsRef>(values: T) -> S None => String::new(), } } + +pub fn parse_expires_in(expires_in: &Option) -> Result>, Error> { + expires_in + .as_ref() + .map(|x| parse_duration::parse::parse(&x).map(|dur| Utc::now() + dur)) + .transpose() + .ok_or_message("Invalid duration passed for --expires-in parameter") +}