Skip to main content

rust_okx/
credentials.rs

1//! API credentials.
2
3use std::fmt;
4
5/// OKX API credentials: an API key, secret key, and passphrase.
6///
7/// The secret key and passphrase are redacted from the [`Debug`] output to
8/// avoid accidental disclosure in logs.
9#[derive(Clone)]
10pub struct Credentials {
11    api_key: String,
12    secret_key: String,
13    passphrase: String,
14}
15
16impl Credentials {
17    /// Create a new set of credentials.
18    pub fn new(
19        api_key: impl Into<String>,
20        secret_key: impl Into<String>,
21        passphrase: impl Into<String>,
22    ) -> Self {
23        Self {
24            api_key: api_key.into(),
25            secret_key: secret_key.into(),
26            passphrase: passphrase.into(),
27        }
28    }
29
30    pub(crate) fn api_key(&self) -> &str {
31        &self.api_key
32    }
33
34    pub(crate) fn secret_key(&self) -> &str {
35        &self.secret_key
36    }
37
38    pub(crate) fn passphrase(&self) -> &str {
39        &self.passphrase
40    }
41}
42
43impl fmt::Debug for Credentials {
44    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
45        f.debug_struct("Credentials")
46            .field("api_key", &self.api_key)
47            .field("secret_key", &"<redacted>")
48            .field("passphrase", &"<redacted>")
49            .finish()
50    }
51}