tinify-rs 1.4.2

A Rust client for the Tinify API
Documentation
use tinify::error::TinifyError;
use tinify::transform::Transform;
use tinify::async_bin::Tinify;
use tinify::convert::Convert;
use tinify::convert::Type;
use std::path::Path;

#[tokio::main]
async fn main() -> Result<(), TinifyError> {
  let key = "api key";
  let convert = Convert {
    r#type: vec![Type::Jpeg],
  };
  let transform = Transform {
    background: "#800020".to_string(),
  };
  let output = Path::new("./optimized.jpg");
  let tinify = Tinify::new().set_key(key);
  let optimized = tinify
    .get_async_client()?
    .from_url("https://tinypng.com/images/panda-happy.png").await?
    .convert(convert)?
    .transform(transform)?
    .to_file(output).await;

  if let Err(error) = optimized {
    match error {
      TinifyError::ClientError { ref upstream } => {
        println!("Error: {} message: {}", upstream.error, upstream.message);
      }
      _ => println!("{:?}", error),
    }
  }

  Ok(())
}