class MarketoAPI::Campaigns

Implements Campaign-related calls for Marketo.

Sources

Campaigns have a source, which the Marketo SOAP API provides as MKTOWS and SALES. MarketoAPI provides these values as the friendlier values marketo and sales, but accepts the standard Maketo SOAP API enumeration values.

Public Instance Methods

for_marketo() click to toggle source
for_marketo(name)
for_marketo(name, exact_name)

Implements getCampaignsForSource for the marketo source; a specialization of for_source.

# File lib/marketo_api/campaigns.rb, line 49
  
for_sales() click to toggle source
for_sales(name)
for_sales(name, exact_name)

Implements getCampaignsForSource for the sales source; a specialization of for_source.

# File lib/marketo_api/campaigns.rb, line 60
  
for_source(source) click to toggle source
for_source(source, name)
for_source(source, name, exact_name)

Implements {getCampaignsForSource}.

If possible, prefer the generated methods for_marketo and for_sales.

# File lib/marketo_api/campaigns.rb, line 37
def for_source(source, name = nil, exact_name = nil)
  call(
    :get_campaigns_for_source,
    {
      source:      resolve_source(source),
      name:        name,
      exactName:   exact_name
    }.delete_if(&MarketoAPI::MINIMIZE_HASH)
  )
end
request(options) click to toggle source

Implements {requestCampaign}.

Parameters

source

Required. The source of the campaign.

leads

Required. An array of Lead objects or lead keys. If both leads and lead are provided, they will be merged.

lead

An alias for leads.

campaign_id

The campaign ID to request for the lead or leads. Required if campaign_name or program_name are not provided.

campaign_name

The campaign name to request for the lead or leads. Required if campaign_id or program_name are not provided.

program_name

The program name to request for the lead or leads. Required if campaign_id or campaign_name are not provided, or if program_tokens are provided.

program_tokens

An array of program tokens in the form: { attrib: { name: name, value: value } } This will be made easier to manage in the future.

If possible, prefer request_marketo and request_sales.

# File lib/marketo_api/campaigns.rb, line 98
def request(options = {})
  source = options.fetch(:source) { :MKTOWS }
  leads = MarketoAPI.array(options.delete(:leads)) +
    MarketoAPI.array(options.delete(:lead))
  if leads.empty?
    raise ArgumentError, ':lead or :leads must be provided'
  end

  valid_id = options.has_key?(:campaign_id) ||
    options.has_key?(:campaign_name) || options.has_key?(:program_name)
  unless valid_id
    raise ArgumentError,
      ':campaign_id, :campaign_name, or :program_name must be provided'
  end

  if options.has_key?(:campaign_id) && options.has_key?(:campaign_name)
    raise ArgumentError,
      ':campaign_id and :campaign_name are mutually exclusive'
  end

  if (tokens = options.delete(:program_tokens)) && !tokens.empty?
    if !options[:program_name]
      raise KeyError,
        ':program_name must be provided when using :program_tokens'
    end
  end

  REQUEST_PARAM_XF.each { |o, n| options[n] = options.delete(o) }

  call(
    :request_campaign,
    options.merge(
      source:           resolve_source(source),
      leadList:         transform_param_list(:get, leads),
      programTokenList: tokens
    ).delete_if(&MarketoAPI::MINIMIZE_HASH)
  )
end
request_marketo(options) click to toggle source

Implements getCampaignsForSource for the marketo source; a specialization of request.

# File lib/marketo_api/campaigns.rb, line 138
  
request_sales(options) click to toggle source

Implements getCampaignsForSource for the sales source; a specialization of request.

# File lib/marketo_api/campaigns.rb, line 147
  
schedule(program_name, campaign_name, options = {}) click to toggle source

Implements {scheduleCampaign}.

Optional Parameters

run_at

The time to run the scheduled campaign.

program_tokens

An array of program tokens in the form: { attrib: { name: name, value: value } } This will be made easier to manage in the future.

source must be marketo or sales or the equivalent enumerated values from the SOAP environment (MKTOWS or SALES).

# File lib/marketo_api/campaigns.rb, line 170
def schedule(program_name, campaign_name, options = {})
  call(
    :schedule_campaign,
    {
      programName:      program_name,
      campaignName:     campaign_name,
      campaignRunAt:    options[:run_at],
      programTokenList: options[:program_tokens]
    }.delete_if(&MarketoAPI::MINIMIZE_HASH)
  )
end

Private Instance Methods

resolve_source(source) click to toggle source
# File lib/marketo_api/campaigns.rb, line 193
def resolve_source(source)
  source = source.to_sym
  res = if ENUMS.include? source
          source
        else
          SOURCES[source]
        end
  raise ArgumentError, "Invalid source #{source}" unless res
  res
end