Class: SoapyCake::AdminAddedit

Inherits:
Client
  • Object
show all
Includes:
Helper
Defined in:
lib/soapy_cake/admin_addedit.rb

Overview

rubocop:disable Metrics/ClassLength

Constant Summary collapse

OFFER_DEFAULT_OPTIONS =
{
  offer_name: '',
  third_party_name: '',
  hidden: 'no_change',
  offer_status_id: 0,
  ssl: 'no_change',
  click_cookie_days: -1,
  impression_cookie_days: -1,
  redirect_offer_contract_id: 0,
  redirect_404: 'no_change',
  enable_view_thru_conversions: 'no_change',
  click_trumps_impression: 'no_change',
  disable_click_deduplication: 'no_change',
  last_touch: 'no_change',
  enable_transaction_id_deduplication: 'no_change',
  postbacks_only: 'no_change',
  pixel_html: '',
  postback_url: '',
  fire_global_pixel: 'no_change',
  fire_pixel_on_nonpaid_conversions: 'no_change',
  expiration_date_modification_type: 'do_not_change',
  offer_contract_name: '',
  offer_link: '',
  thankyou_link: '',
  preview_link: '',
  thumbnail_file_import_url: '',
  offer_description: '',
  restrictions: '',
  advertiser_extended_terms: '',
  testing_instructions: '',
  allow_affiliates_to_create_creatives: 'no_change',
  unsubscribe_link: '',
  from_lines: '',
  subject_lines: '',
  conversions_from_whitelist_only: 'off',
  allowed_media_type_modification_type: 'do_not_change',
  track_search_terms_from_non_supported_search_engines: 'off',
  auto_disposition_type: 'none',
  auto_disposition_delay_hours: '0',
  session_regeneration_seconds: -1,
  session_regeneration_type_id: 0,
  payout_modification_type: 'change',
  received_modification_type: 'change',
  tags_modification_type: 'do_not_change'
}.freeze
REQUIRED_NEW_OFFER_PARAMS =
%i(
  hidden offer_status_id offer_type_id currency_id ssl click_cookie_days
  impression_cookie_days redirect_404 enable_view_thru_conversions
  click_trumps_impression disable_click_deduplication last_touch
  enable_transaction_id_deduplication postbacks_only fire_global_pixel
  fire_pixel_on_nonpaid_conversions offer_link thankyou_link from_lines
  subject_lines
).freeze
REQUIRED_OFFER_PARAMS =
%i(
  advertiser_id vertical_id postback_url_ms_delay offer_contract_hidden
  price_format_id received received_percentage payout tags
).freeze
REQUIRED_OFFER_CONTRACT_PARAMS =
%i(
  offer_id offer_contract_id offer_contract_name price_format_id payout received
  received_percentage offer_link thankyou_link offer_contract_hidden
  offer_contract_is_default use_fallback_targeting
).freeze
CAMPAIGN_UPDATE_DEFAULT_OPTIONS =
{
  account_status_id: :no_change,
  auto_disposition_delay_hours: 0,
  clear_session_on_conversion: 'no_change',
  currency_id: 0,
  expiration_date_modification_type: 'do_not_change',
  media_type_id: 0,
  paid: 'no_change',
  paid_redirects: 'no_change',
  paid_upsells: 'no_change',
  postback_delay_ms: -1,
  redirect_404: 'no_change',
  redirect_offer_contract_id: 0,
  review: 'no_change',
  use_offer_contract_payout: 'no_change',
  payout_update_option: 'do_not_change'
}.freeze

Constants inherited from Client

Client::HEADERS

Instance Method Summary collapse

Methods included from Helper

#const_lookup, #future_expiration_date, #require_params, #translate_booleans, #translate_values, #validate_id, #walk_tree

Methods inherited from Client

#initialize, #read_only?, #xml_response?

Constructor Details

This class inherits a constructor from SoapyCake::Client

Instance Method Details

#add_campaign(opts) ⇒ Object



189
190
191
192
# File 'lib/soapy_cake/admin_addedit.rb', line 189

def add_campaign(opts)
  require_params(opts, %i(affiliate_id offer_id account_status_id payout))
  addedit_campaign(opts.merge(campaign_id: 0, expiration_date: future_expiration_date))
end

#add_geo_targets(opts) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/soapy_cake/admin_addedit.rb', line 109

def add_geo_targets(opts)
  require_params(opts, %i(offer_contract_id allow_countries))

  opts = if opts[:allow_countries]
           geo_targets_allow_options(opts)
         else
           geo_targets_redirect_options(opts)
         end

  opts = opts.merge(add_edit_option: 'add', set_targeting_to_geo: true)

  run Request.new(:admin, :addedit, :geo_targets, opts)
end

#add_offer(opts) ⇒ Object



91
92
93
94
95
# File 'lib/soapy_cake/admin_addedit.rb', line 91

def add_offer(opts)
  require_params(opts, REQUIRED_NEW_OFFER_PARAMS)

  addedit_offer(opts.merge(offer_id: 0))
end

#add_offer_contract(opts = {}) ⇒ Object



144
145
146
# File 'lib/soapy_cake/admin_addedit.rb', line 144

def add_offer_contract(opts = {})
  addedit_offer_contract(opts.merge(offer_contract_id: 0))
end

#add_offer_tier(opts) ⇒ Object



171
172
173
# File 'lib/soapy_cake/admin_addedit.rb', line 171

def add_offer_tier(opts)
  addedit_offer_tier('add', opts)
end

#create_advertiser(opts) ⇒ Object



185
186
187
# File 'lib/soapy_cake/admin_addedit.rb', line 185

def create_advertiser(opts)
  run Request.new(:admin, :addedit, :advertiser, opts.merge(advertiser_id: 0))
end

#edit_affiliate(opts) ⇒ Object



179
180
181
182
183
# File 'lib/soapy_cake/admin_addedit.rb', line 179

def edit_affiliate(opts)
  require_params(opts, %i(affiliate_id vat_tax_required))

  run Request.new(:admin, :addedit, :affiliate, opts)
end

#edit_campaign(opts) ⇒ Object



194
195
196
197
198
199
# File 'lib/soapy_cake/admin_addedit.rb', line 194

def edit_campaign(opts)
  require_params(opts, %i(campaign_id))
  validate_id(opts, :campaign_id)

  addedit_campaign(CAMPAIGN_UPDATE_DEFAULT_OPTIONS.merge(opts))
end

#edit_contact(opts) ⇒ Object



103
104
105
106
107
# File 'lib/soapy_cake/admin_addedit.rb', line 103

def edit_contact(opts)
  require_params(opts, %i(entity_id contact_id contact_email_address))

  run Request.new(:admin, :addedit, :contact, opts)
end

#edit_offer(opts = {}) ⇒ Object



97
98
99
100
101
# File 'lib/soapy_cake/admin_addedit.rb', line 97

def edit_offer(opts = {})
  validate_id(opts, :offer_id)

  addedit_offer(opts)
end

#edit_offer_contract(opts = {}) ⇒ Object



148
149
150
151
152
# File 'lib/soapy_cake/admin_addedit.rb', line 148

def edit_offer_contract(opts = {})
  validate_id(opts, :offer_contract_id)

  addedit_offer_contract(opts)
end

#edit_offer_tier(opts) ⇒ Object



175
176
177
# File 'lib/soapy_cake/admin_addedit.rb', line 175

def edit_offer_tier(opts)
  addedit_offer_tier('replace', opts)
end

#geo_targets_allow_options(opts) ⇒ Object



123
124
125
126
127
128
129
130
# File 'lib/soapy_cake/admin_addedit.rb', line 123

def geo_targets_allow_options(opts)
  require_params(opts, %i(countries))
  opts = opts.dup
  countries = Array(opts[:countries])
  opts[:countries] = countries.join(',')
  opts[:redirect_site_offer_contract_ids] = ([-1] * countries.count).join(',')
  opts
end

#geo_targets_redirect_options(opts) ⇒ Object



132
133
134
135
136
137
138
139
140
141
142
# File 'lib/soapy_cake/admin_addedit.rb', line 132

def geo_targets_redirect_options(opts)
  opts = opts.dup
  redirects = opts.delete(:redirects)
  unless redirects.is_a?(Hash) && redirects.keys.count.positive?
    raise Error, "Parameter 'redirects' must be a COUNTRY=>REDIRECT_OFFER_CONTRACT_ID hash!"
  end

  opts[:countries] = redirects.keys.join(',')
  opts[:redirect_site_offer_contract_ids] = redirects.values.join(',')
  opts
end

#remove_caps(opts) ⇒ Object



162
163
164
165
166
167
168
169
# File 'lib/soapy_cake/admin_addedit.rb', line 162

def remove_caps(opts)
  require_params(opts, %i(cap_type_id))

  opts = translate_values(opts, %i(cap_type_id))

  opts = opts.merge(cap_interval_id: 0, cap_amount: -1, send_alert_only: false)
  run Request.new(:admin, :addedit, :caps, opts)
end

#update_caps(opts) ⇒ Object



154
155
156
157
158
159
160
# File 'lib/soapy_cake/admin_addedit.rb', line 154

def update_caps(opts)
  require_params(opts, %i(cap_type_id cap_interval_id cap_amount send_alert_only))

  opts = translate_values(opts, %i(cap_type_id cap_interval_id))

  run Request.new(:admin, :addedit, :caps, opts)
end