tiktok_rust 0.0.6

A Rust library for interacting with the TikTok API, enabling direct posting of content and querying creator information.
Documentation
use derive_builder::Builder;
use serde::{Deserialize, Serialize};

use crate::error::ErrorResponse;

#[derive(Clone, Serialize, Deserialize, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum Source {
    FileUpload,
    PullFromUrl,
}

#[derive(Clone, Serialize, Deserialize, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum PrivacyLevel {
    PublicToEveryone,
    MutualFollowFriends,
    FollowerOfCreator,
    SelfOnly,
}

#[derive(Clone, Serialize, Deserialize, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum PostMode {
    DirectPost,
    MediaUpload,
}

#[derive(Clone, Serialize, Deserialize, Debug)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum MediaType {
    Photo,
}

#[derive(Clone, Serialize, Deserialize, Debug, Builder)]
#[builder(setter(into))]
pub struct PostInfo {
    pub title: String,
    pub privacy_level: PrivacyLevel,
    pub disable_duet: bool,
    pub disable_comment: bool,
    pub disable_stitch: bool,
    pub video_cover_timestamp_ms: u64,
}

#[derive(Clone, Serialize, Deserialize, Debug, Builder)]
#[builder(setter(into))]
pub struct SourceInfo {
    pub source: Source,
    pub video_size: Option<u64>,
    pub chunk_size: Option<u64>,
    pub total_chunk_count: Option<u32>,
    pub video_url: Option<String>,
    pub photo_cover_index: Option<u32>,
    pub photo_images: Option<Vec<String>>,
}

#[derive(Clone, Serialize, Deserialize, Debug, Builder)]
#[builder(setter(into))]
pub struct VideoInitRequest {
    pub post_info: PostInfo,
    pub source_info: SourceInfo,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct VideoInitResponseData {
    pub publish_id: String,
    pub upload_url: Option<String>,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct VideoInitResponse {
    pub data: VideoInitResponseData,
    pub error: ErrorResponse,
}

#[derive(Clone, Serialize, Deserialize, Debug, Builder)]
#[builder(setter(into))]
pub struct PhotoInitRequest {
    pub post_info: PostInfo,
    pub source_info: SourceInfo,
    pub post_mode: PostMode,
    pub media_type: MediaType,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct PostStatusResponse {
    pub data: PostStatusData,
    pub error: ErrorResponse,
}

#[derive(Serialize, Deserialize, Debug)]
pub struct PostStatusData {
    pub publish_id: String,
    pub status: String,
}