/*
* img-src API
*
* Image processing and delivery API. A serverless image processing and delivery API built on Cloudflare Workers with parameter-driven image transformation and on-demand transcoding. ## Features - **Image Upload**: Store original images in R2 with SHA256-based deduplication - **On-Demand Transformation**: Resize, crop, and convert images via URL parameters - **Format Conversion**: WebP, AVIF, JPEG, PNG output formats - **Path Organization**: Organize images into folders with multiple paths per image - **CDN Caching**: Automatic edge caching for transformed images ## Authentication Authenticate using API Keys with `imgsrc_` prefix. Create your API key at https://img-src.io/settings ## Rate Limiting - **Free Plan**: 100 requests/minute - **Pro Plan**: 500 requests/minute Rate limit headers are included in all responses.
*
* The version of the OpenAPI document: 1.0.0
* Contact: taehun@taehun.dev
* Generated by: https://openapi-generator.tech
*/
use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct UserSettings {
/// Clerk user ID
#[serde(rename = "id")]
pub id: String,
/// Username
#[serde(rename = "username")]
pub username: String,
/// Email address
#[serde(rename = "email", skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
/// User's plan
#[serde(rename = "plan")]
pub plan: String,
/// Preferred delivery formats (ordered)
#[serde(rename = "delivery_formats")]
pub delivery_formats: Vec<String>,
/// Default image quality (1-100)
#[serde(rename = "default_quality")]
pub default_quality: i32,
/// Default fit mode
#[serde(rename = "default_fit_mode")]
pub default_fit_mode: String,
/// Default maximum width
#[serde(rename = "default_max_width", skip_serializing_if = "Option::is_none")]
pub default_max_width: Option<i32>,
/// Default maximum height
#[serde(rename = "default_max_height", skip_serializing_if = "Option::is_none")]
pub default_max_height: Option<i32>,
/// UI theme
#[serde(rename = "theme")]
pub theme: String,
/// UI language
#[serde(rename = "language")]
pub language: String,
/// Account creation timestamp (Unix epoch)
#[serde(rename = "created_at")]
pub created_at: i64,
/// Last update timestamp (Unix epoch)
#[serde(rename = "updated_at")]
pub updated_at: i64,
/// Total number of uploads
#[serde(rename = "total_uploads")]
pub total_uploads: i32,
/// Total storage used in bytes
#[serde(rename = "storage_used_bytes")]
pub storage_used_bytes: i64,
}
impl UserSettings {
pub fn new(
id: String,
username: String,
plan: String,
delivery_formats: Vec<String>,
default_quality: i32,
default_fit_mode: String,
theme: String,
language: String,
created_at: i64,
updated_at: i64,
total_uploads: i32,
storage_used_bytes: i64,
) -> UserSettings {
UserSettings {
id,
username,
email: None,
plan,
delivery_formats,
default_quality,
default_fit_mode,
default_max_width: None,
default_max_height: None,
theme,
language,
created_at,
updated_at,
total_uploads,
storage_used_bytes,
}
}
}