alipan 0.0.8

alipan sdk for rust
Documentation
use crate::AccessTokenLoader;
use async_trait::async_trait;
use reqwest::RequestBuilder;
use std::sync::Arc;

#[async_trait]
pub trait LoadAccessToken<T> {
    async fn load_access_token(self, loader: Arc<Box<dyn AccessTokenLoader>>) -> crate::Result<T>;
}

#[async_trait]
impl LoadAccessToken<RequestBuilder> for RequestBuilder {
    async fn load_access_token(
        self,
        loader: Arc<Box<dyn AccessTokenLoader>>,
    ) -> crate::Result<Self> {
        let token = loader.get_access_token().await?;
        Ok(self.header("Authorization", format!("Bearer {}", token.access_token)))
    }
}