thumbor 0.0.2

A Rust client for the Thumbor image service
Documentation
use filter::Filter;

use crate::{
    geometry::{Coords, Rect},
    server::Server,
};

mod builder;
pub mod filter;

#[derive(strum::AsRefStr)]
#[strum(serialize_all = "lowercase")]
pub enum HAlignment {
    Left,
    Center,
    Right,
}

#[derive(strum::AsRefStr)]
#[strum(serialize_all = "lowercase")]
pub enum VAlignment {
    Top,
    Middle,
    Bottom,
}

#[derive(Default)]
pub enum Trim {
    #[default]
    TopLeft,
    BottomRight,
}

#[derive(Default)]
pub enum FitIn {
    #[default]
    Default,
    Adaptive,
    Full,
}

pub enum ResponseMode {
    Metadata,
    Debug,
}

#[derive(Default, bon::Builder)]
#[builder(start_fn = with_server)]
pub struct Settings {
    #[builder(start_fn)]
    server: Server,
    response: Option<ResponseMode>,
    trim: Option<Trim>,
    #[builder(into)]
    crop: Option<Rect>,
    fit_in: Option<FitIn>,
    #[builder(into)]
    resize: Option<Coords>,
    h_align: Option<HAlignment>,
    v_align: Option<VAlignment>,
    #[builder(default, into)]
    filters: Vec<Filter>,
    #[builder(default)]
    smart: bool,
}