Skip to main content

alpaca_core/
auth.rs

1use std::fmt;
2
3use crate::{Error, validate};
4
5#[derive(Clone, PartialEq, Eq)]
6pub struct Credentials {
7    api_key: String,
8    secret_key: String,
9}
10
11impl Credentials {
12    pub fn new(api_key: impl Into<String>, secret_key: impl Into<String>) -> Result<Self, Error> {
13        let api_key = validate::non_empty_string("api_key", api_key)?;
14        let secret_key = validate::non_empty_string("secret_key", secret_key)?;
15        validate::valid_header_value("api_key", &api_key)?;
16        validate::valid_header_value("secret_key", &secret_key)?;
17
18        Ok(Self {
19            api_key,
20            secret_key,
21        })
22    }
23
24    #[must_use]
25    pub fn api_key(&self) -> &str {
26        &self.api_key
27    }
28
29    #[must_use]
30    pub fn secret_key(&self) -> &str {
31        &self.secret_key
32    }
33}
34
35impl fmt::Debug for Credentials {
36    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
37        f.debug_struct("Credentials")
38            .field("api_key", &"[REDACTED]")
39            .field("secret_key", &"[REDACTED]")
40            .finish()
41    }
42}