paystack_transaction/
cred.rs

1use std::env;
2
3use dotenv::dotenv;
4use secrecy::{ExposeSecret, Secret};
5
6use crate::AuthError;
7
8/// Helper function that looks for Secret Key from your `.env` file and returns a `Secret<String>`.
9///
10/// # Example
11/// ```no_run
12/// use paystack_transaction::{cred_from_env, PaymentBuilder, Payment};
13///
14/// async fn build() {
15///     let key = cred_from_env("SECRET_KEY".to_string()).unwrap();
16///
17///     let builder = PaymentBuilder::init_payment(
18///         "test@example.com".to_string(),
19///         100.0,
20///         key,
21///     );
22///
23///     builder.build().send().await.unwrap();
24/// }
25/// ```
26pub fn cred_from_env(env_key: String) -> Result<Secret<String>, AuthError> {
27    dotenv().ok();
28
29    let pk = env::var(env_key)
30        .map_err(|_| AuthError::NoPublicKey)
31        .unwrap();
32
33    Ok(Secret::new(pk))
34}
35
36/// Helper for unmasking `Secret` wrapper
37pub fn expose_secret(secret: Secret<String>) -> String {
38    secret.expose_secret().to_owned()
39}