elevenlabs_api/
elevenlabs.rs1use serde::{Deserialize, Serialize};
2use ureq::{Agent, AgentBuilder};
3
4#[derive(Clone, Debug, Serialize, Deserialize)]
5pub struct Auth {
6 pub api_key: String,
7}
8
9impl Auth {
10 pub fn new(api_key: &str) -> Auth {
11 Auth {
12 api_key: api_key.to_string(),
13 }
14 }
15
16 pub fn from_env() -> Result<Self, String> {
17 let api_key = std::env::var("ELEVENLABS_API_KEY")
18 .map_err(|_| "Missing ELEVENLABS_API_KEY".to_string())?;
19 Ok(Self { api_key })
20 }
21}
22
23#[derive(Clone, Debug)]
24pub struct Elevenlabs {
25 pub auth: Auth,
26 pub api_url: String,
27 pub(crate) agent: Agent,
28}
29
30impl Elevenlabs {
31 pub fn new(auth: Auth, api_url: &str) -> Elevenlabs {
32 Elevenlabs {
33 auth,
34 api_url: api_url.to_string(),
35 agent: AgentBuilder::new().build(),
36 }
37 }
38}
39
40#[cfg(test)]
41mod tests {
42 use super::*;
43
44 #[test]
45 fn new_test_elevenlabs() {
46 let auth = Auth::from_env().unwrap();
47 let elevenlabs = Elevenlabs::new(auth, "https://api.elevenlabs.io/v1");
48
49 assert_eq!(elevenlabs.api_url, "https://api.elevenlabs.io/v1");
50 }
51}