use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct CreateStandaloneAdRequest {
#[serde(rename = "accountId")]
pub account_id: String,
#[serde(rename = "adAccountId")]
pub ad_account_id: String,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "goal")]
pub goal: Goal,
#[serde(rename = "budgetAmount")]
pub budget_amount: f64,
#[serde(rename = "budgetType")]
pub budget_type: BudgetType,
#[serde(rename = "currency", skip_serializing_if = "Option::is_none")]
pub currency: Option<String>,
#[serde(rename = "headline", skip_serializing_if = "Option::is_none")]
pub headline: Option<String>,
#[serde(rename = "longHeadline", skip_serializing_if = "Option::is_none")]
pub long_headline: Option<String>,
#[serde(rename = "body")]
pub body: String,
#[serde(rename = "callToAction", skip_serializing_if = "Option::is_none")]
pub call_to_action: Option<CallToAction>,
#[serde(rename = "linkUrl", skip_serializing_if = "Option::is_none")]
pub link_url: Option<String>,
#[serde(rename = "imageUrl", skip_serializing_if = "Option::is_none")]
pub image_url: Option<String>,
#[serde(rename = "businessName", skip_serializing_if = "Option::is_none")]
pub business_name: Option<String>,
#[serde(rename = "boardId", skip_serializing_if = "Option::is_none")]
pub board_id: Option<String>,
#[serde(rename = "countries", skip_serializing_if = "Option::is_none")]
pub countries: Option<Vec<String>>,
#[serde(rename = "ageMin", skip_serializing_if = "Option::is_none")]
pub age_min: Option<i32>,
#[serde(rename = "ageMax", skip_serializing_if = "Option::is_none")]
pub age_max: Option<i32>,
#[serde(rename = "interests", skip_serializing_if = "Option::is_none")]
pub interests: Option<Vec<String>>,
#[serde(rename = "endDate", skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
#[serde(rename = "audienceId", skip_serializing_if = "Option::is_none")]
pub audience_id: Option<String>,
#[serde(rename = "campaignType", skip_serializing_if = "Option::is_none")]
pub campaign_type: Option<CampaignType>,
#[serde(rename = "keywords", skip_serializing_if = "Option::is_none")]
pub keywords: Option<Vec<String>>,
#[serde(
rename = "additionalHeadlines",
skip_serializing_if = "Option::is_none"
)]
pub additional_headlines: Option<Vec<String>>,
#[serde(
rename = "additionalDescriptions",
skip_serializing_if = "Option::is_none"
)]
pub additional_descriptions: Option<Vec<String>>,
}
impl CreateStandaloneAdRequest {
pub fn new(
account_id: String,
ad_account_id: String,
name: String,
goal: Goal,
budget_amount: f64,
budget_type: BudgetType,
body: String,
) -> CreateStandaloneAdRequest {
CreateStandaloneAdRequest {
account_id,
ad_account_id,
name,
goal,
budget_amount,
budget_type,
currency: None,
headline: None,
long_headline: None,
body,
call_to_action: None,
link_url: None,
image_url: None,
business_name: None,
board_id: None,
countries: None,
age_min: None,
age_max: None,
interests: None,
end_date: None,
audience_id: None,
campaign_type: None,
keywords: None,
additional_headlines: None,
additional_descriptions: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Goal {
#[serde(rename = "engagement")]
Engagement,
#[serde(rename = "traffic")]
Traffic,
#[serde(rename = "awareness")]
Awareness,
#[serde(rename = "video_views")]
VideoViews,
}
impl Default for Goal {
fn default() -> Goal {
Self::Engagement
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum BudgetType {
#[serde(rename = "daily")]
Daily,
#[serde(rename = "lifetime")]
Lifetime,
}
impl Default for BudgetType {
fn default() -> BudgetType {
Self::Daily
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum CallToAction {
#[serde(rename = "LEARN_MORE")]
LearnMore,
#[serde(rename = "SHOP_NOW")]
ShopNow,
#[serde(rename = "SIGN_UP")]
SignUp,
#[serde(rename = "BOOK_TRAVEL")]
BookTravel,
#[serde(rename = "CONTACT_US")]
ContactUs,
#[serde(rename = "DOWNLOAD")]
Download,
#[serde(rename = "GET_OFFER")]
GetOffer,
#[serde(rename = "GET_QUOTE")]
GetQuote,
#[serde(rename = "SUBSCRIBE")]
Subscribe,
#[serde(rename = "WATCH_MORE")]
WatchMore,
}
impl Default for CallToAction {
fn default() -> CallToAction {
Self::LearnMore
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum CampaignType {
#[serde(rename = "display")]
Display,
#[serde(rename = "search")]
Search,
}
impl Default for CampaignType {
fn default() -> CampaignType {
Self::Display
}
}