saturn_cli/db/
google_macros.rs1#[macro_export]
2macro_rules! do_client {
3 ($obj:ident, $block:block) => {{
4 use $crate::time::now;
5
6 'end: loop {
7 if let Some(expires) = $obj.config.access_token_expires_at() {
8 if expires - chrono::TimeDelta::try_hours(1).unwrap_or_default() < now().naive_utc() {
9 $obj.refresh_access_token().await?;
10 }
11 }
12
13 match $block.await {
14 Ok(t) => {
15 break 'end Ok(t);
16 }
17 Err(e) => match e {
18 ClientError::InvalidToken => {
19 $obj.refresh_access_token().await?;
20 }
21 _ => break 'end Err(e),
22 },
23 }
24 }
25 }};
26}