saturn_cli/db/
google_macros.rs

1#[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}