Class: SoapyCake::Campaigns

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

Constant Summary collapse

ALL_PARAMS =

TODO: Figure out what ‘static_suppression` is for and whether it needs to be in the list.

%i[
  account_status_id affiliate_id auto_disposition_delay_hours campaign_id
  clear_session_on_conversion currency_id display_link_type_id
  expiration_date expiration_date_modification_type media_type_id
  offer_contract_id offer_id paid paid_redirects paid_upsells payout
  payout_update_option pixel_html postback_delay_ms postback_url
  redirect_404 redirect_domain redirect_offer_contract_id review test_link
  third_party_name unique_key_hash use_offer_contract_payout
].freeze
NO_CHANGE_VALUES =
{
  account_status_id: 0,
  expiration_date_modification_type: ModificationType::DO_NOT_CHANGE,
  currency_id: 0,
  use_offer_contract_payout: 'no_change',
  payout_update_option: ModificationType::DO_NOT_CHANGE,
  paid: 'no_change',
  paid_redirects: 'no_change',
  paid_upsells: 'no_change',
  review: 'no_change',
  auto_disposition_delay_hours: -1,
  redirect_offer_contract_id: 0,
  redirect_404: 'no_change',
  clear_session_on_conversion: 'no_change',
  postback_delay_ms: -1
}.freeze

Instance Method Summary collapse

Methods included from Helper

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

Instance Method Details

#create(opts = {}) ⇒ Object



42
43
44
45
# File 'lib/soapy_cake/campaigns.rb', line 42

def create(opts = {})
  response = addedit_campaign(opts.merge(campaign_id: 0))
  response.fetch(:success_info).fetch(:campaign_id)
end

#get(opts = {}) ⇒ Object



38
39
40
# File 'lib/soapy_cake/campaigns.rb', line 38

def get(opts = {})
  client.run Request.new(:admin, :export, :campaigns, opts)
end

#patch(campaign_id, opts = {}) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/soapy_cake/campaigns.rb', line 57

def patch(campaign_id, opts = {})
  campaign = get(campaign_id: campaign_id).first
  opts = NO_CHANGE_VALUES
    .merge(
      affiliate_id: campaign.fetch(:affiliate).fetch(:affiliate_id),
      # Only present in production:
      display_link_type_id: campaign.dig(:display_link_type, :link_display_type_id) || 1,
      media_type_id: campaign.fetch(:media_type).fetch(:media_type_id),
      offer_contract_id: campaign.fetch(:offer_contract).fetch(:offer_contract_id),
      offer_id: campaign.fetch(:offer).fetch(:offer_id),
      payout: campaign.fetch(:payout).fetch(:amount),
      payout_update_option: 'do_not_change',
      pixel_html: campaign.dig(:pixel_info, :pixel_html) || '',
      postback_url: campaign.dig(:pixel_info, :postback_url) || '',
      redirect_domain: campaign.fetch(:redirect_domain, ''),
      test_link: campaign[:test_link] || '',
      unique_key_hash: campaign.dig(:pixel_info, :hash_type, :hash_type_id) || 'none',
      third_party_name: campaign.fetch(:third_party_name, '')
    )
    .merge(opts)
  update(campaign_id, opts)
  nil
end

#update(campaign_id, opts = {}) ⇒ Object



47
48
49
50
51
52
53
54
55
# File 'lib/soapy_cake/campaigns.rb', line 47

def update(campaign_id, opts = {})
  opts = opts.merge(campaign_id: campaign_id)
  opts = opts.merge(payout.options(opts))
  opts = opts.merge(expiration_date.options(opts))
  opts = NO_CHANGE_VALUES.merge(opts)
  require_params(opts, ALL_PARAMS)
  addedit_campaign(opts)
  nil
end