vrchatapi 1.23.1-nightly.7

VRChat API Client for Rust
Documentation
use crate::models;
use serde::{Deserialize, Serialize};

#[serde_with::serde_as]
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct InfoPushContentShelfData {
    #[serde(rename = "contentSource")]
    pub content_source: models::InfoPushDataContentSource,
    #[serde(rename = "controls")]
    pub controls: Vec<models::InfoPushDataControl>,
    #[serde(rename = "imageUrl", deserialize_with = "Option::deserialize")]
    pub image_url: Option<String>,
    #[serde(rename = "onPressed", deserialize_with = "Option::deserialize")]
    pub on_pressed: Option<models::InfoPushDataClickable>,
    #[serde(rename = "presentation")]
    pub presentation: models::InfoPushDataPresentation,
    #[serde(rename = "schemaVersion")]
    pub schema_version: i32,
    #[serde(rename = "subtitle")]
    pub subtitle: String,
    #[serde(rename = "thumbnailImageUrl", deserialize_with = "Option::deserialize")]
    pub thumbnail_image_url: Option<String>,
    #[serde(rename = "title")]
    pub title: String,
}

impl InfoPushContentShelfData {
    pub fn new(
        content_source: models::InfoPushDataContentSource,
        controls: Vec<models::InfoPushDataControl>,
        image_url: Option<String>,
        on_pressed: Option<models::InfoPushDataClickable>,
        presentation: models::InfoPushDataPresentation,
        schema_version: i32,
        subtitle: String,
        thumbnail_image_url: Option<String>,
        title: String,
    ) -> InfoPushContentShelfData {
        InfoPushContentShelfData {
            content_source,
            controls,
            image_url,
            on_pressed,
            presentation,
            schema_version,
            subtitle,
            thumbnail_image_url,
            title,
        }
    }
}