1use crate::error::TinifyError;
2use crate::sync::client::Client;
3
4#[derive(Default)]
6pub struct Tinify {
7 pub key: String,
8}
9
10impl Tinify {
11 pub fn new() -> Self {
13 Self { key: String::new() }
14 }
15
16 pub fn set_key(mut self, key: &str) -> Self {
18 self.key = key.into();
19 self
20 }
21
22 pub fn get_client(&self) -> Result<Client, TinifyError> {
39 let client = Client::new(&self.key);
40
41 Ok(client)
42 }
43}
44
45#[cfg(test)]
46mod tests {
47 use super::*;
48 use dotenv::dotenv;
49 use std::env;
50
51 #[test]
52 fn test_get_client() -> Result<(), TinifyError> {
53 dotenv().ok();
54 let key = match env::var("KEY") {
55 Ok(key) => key,
56 Err(_err) => panic!("No such file or directory."),
57 };
58 let _ = Tinify::new().set_key(&key).get_client()?;
59
60 Ok(())
61 }
62}