alibabacloud-imm 0.1.0

A modern, easy-to-use, and reqwest-powered Rust SDK for Alibaba Cloud Intelligent Media Management (IMM)
Documentation
use super::{Credentials, CredentialsProvider};
use crate::Result;

#[derive(Debug)]
pub struct StaticCredentialsProvider {
    credentials: Credentials,
}

impl StaticCredentialsProvider {
    pub fn new(access_key_id: impl Into<String>, access_key_secret: impl Into<String>) -> Self {
        Self {
            credentials: Credentials::new(access_key_id, access_key_secret),
        }
    }

    pub fn with_security_token(
        access_key_id: impl Into<String>,
        access_key_secret: impl Into<String>,
        security_token: impl Into<String>,
    ) -> Self {
        Self {
            credentials: Credentials::with_sts(access_key_id, access_key_secret, security_token, None),
        }
    }
}

impl CredentialsProvider for StaticCredentialsProvider {
    async fn get_credentials(&self) -> Result<Credentials> {
        Ok(self.credentials.clone())
    }
}

impl From<Credentials> for StaticCredentialsProvider {
    fn from(credentials: Credentials) -> Self {
        Self { credentials }
    }
}