openai-client-base 0.12.0

Auto-generated Rust client for the OpenAI API
/*
 * OpenAI API
 *
 * The OpenAI REST API. Please see https://platform.openai.com/docs/api-reference for more details.
 *
 * The version of the OpenAPI document: 2.3.0
 *
 * Generated by: https://openapi-generator.tech
 */

use crate::models;
use serde::{Deserialize, Serialize};

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, bon::Builder)]
pub struct CreateUploadRequest {
    /// The name of the file to upload.
    #[serde(rename = "filename")]
    pub filename: String,
    /// The intended purpose of the uploaded file.  See the [documentation on File purposes](/docs/api-reference/files/create#files-create-purpose).
    #[serde(rename = "purpose")]
    pub purpose: Purpose,
    /// The number of bytes in the file you are uploading.
    #[serde(rename = "bytes")]
    pub bytes: i32,
    /// The MIME type of the file.   This must fall within the supported MIME types for your file purpose. See the supported MIME types for assistants and vision.
    #[serde(rename = "mime_type")]
    pub mime_type: String,
    #[serde(rename = "expires_after", skip_serializing_if = "Option::is_none")]
    pub expires_after: Option<Box<models::FileExpirationAfter>>,
}

impl CreateUploadRequest {
    pub fn new(
        filename: String,
        purpose: Purpose,
        bytes: i32,
        mime_type: String,
    ) -> CreateUploadRequest {
        CreateUploadRequest {
            filename,
            purpose,
            bytes,
            mime_type,
            expires_after: None,
        }
    }
}
/// The intended purpose of the uploaded file.  See the [documentation on File purposes](/docs/api-reference/files/create#files-create-purpose).
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Purpose {
    #[serde(rename = "assistants")]
    Assistants,
    #[serde(rename = "batch")]
    Batch,
    #[serde(rename = "fine-tune")]
    FineTune,
    #[serde(rename = "vision")]
    Vision,
}

impl Default for Purpose {
    fn default() -> Purpose {
        Self::Assistants
    }
}

impl std::fmt::Display for CreateUploadRequest {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match serde_json::to_string(self) {
            Ok(s) => write!(f, "{}", s),
            Err(_) => Err(std::fmt::Error),
        }
    }
}