use super::common::{
DistributionChannel43, MessageAuditTrail43, MessageControlType43, PartyDescriptor43,
PriceInformation43, TerritoryCode43, ValidityPeriod43,
};
use crate::models::common::LocalizedString;
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MessageHeader43 {
pub message_id: String,
pub message_thread_id: Option<String>,
pub message_type: MessageType43,
pub message_sender: PartyDescriptor43,
pub message_recipient: PartyDescriptor43,
pub message_created_date_time: DateTime<Utc>,
pub message_audit_trail: Option<MessageAuditTrail43>,
pub message_control_type: Option<MessageControlType43>,
pub profile: Option<ReleaseProfile43>, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum MessageType43 {
NewReleaseMessage,
CatalogListMessage,
UpdateReleaseMessage,
TakedownMessage, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ReleaseProfile43 {
AudioAlbumMusicOnly,
AudioSingle,
VideoAlbum,
VideoSingle,
LongFormVideo,
Mixed,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DealTerms43 {
pub deal_reference: Option<String>,
pub commercial_model_type: Vec<CommercialModelType43>,
pub use_type: Vec<UseType43>,
pub territory_code: Vec<TerritoryCode43>,
pub distribution_channel: Vec<DistributionChannel43>,
pub price_information: Vec<PriceInformation43>,
pub validity_period: Option<ValidityPeriod43>,
pub pre_order_date: Option<DateTime<Utc>>, pub pre_order_preview_date: Option<DateTime<Utc>>, pub instant_gratification_date: Option<DateTime<Utc>>, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum CommercialModelType43 {
PayAsYouGoModel,
SubscriptionModel,
AdSupportedModel,
FreeOfChargeModel, BundledModel, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum UseType43 {
Stream,
Download,
OnDemandStream,
NonInteractiveStream,
ConditionalDownload, TetheredDownload, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ResourceGroup43 {
pub resource_group_reference: String,
pub resource_group_type: ResourceGroupType43,
pub resource_reference: Vec<String>,
pub sequence_number: Option<i32>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ResourceGroupType43 {
MainRelease,
BonusResources,
Chapter,
Session,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ChapterInformation43 {
pub chapter_reference: String,
pub chapter_title: Vec<LocalizedString>,
pub start_time: String, pub end_time: String,
pub chapter_type: Option<String>,
}