tinify/sync/
tinify.rs

1use crate::error::TinifyError;
2use crate::sync::client::Client;
3
4/// Use the API to create a new client.
5#[derive(Default)]
6pub struct Tinify {
7  pub key: String,
8}
9
10impl Tinify {
11  /// Create a new Tinify Object.
12  pub fn new() -> Self {
13    Self { key: String::new() }
14  }
15
16  /// Set a Tinify Key.
17  pub fn set_key(mut self, key: &str) -> Self {
18    self.key = key.into();
19    self
20  }
21
22  /// Get a new Tinify Client.
23  ///
24  /// # Examples
25  ///
26  /// ```
27  /// use tinify::sync::Tinify;
28  /// use tinify::error::TinifyError;
29  ///
30  /// fn main() -> Result<(), TinifyError> {
31  ///   let key = "tinify api key";
32  ///   let tinify = Tinify::new().set_key(key);
33  ///   let client = tinify.get_client()?;
34  ///
35  ///   Ok(())
36  /// }
37  /// ```
38  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}