This gem provides some level of abstraction to Marketo REST APIs. Please note that this gem is alpha quality.
Add this line to your application's Gemfile:
gem 'mrkt'
And then execute:
$ bundle
Or install it yourself as:
$ gem install mrkt
Get the following from your Marketo admin:
- hostname, i.e.
'123-abc-123.mktorest.com'
- client id, e.g.
'4567e1cdf-0fae-4685-a914-5be45043f2d8'
- client secret, e.g.
'7Gn0tuiHZiDHnzeu9P14uDQcSx9xIPPt'
client = Mrkt::Client.new(
host: '123-abc-123.mktorest.com',
client_id: '4567e1cdf-0fae-4685-a914-5be45043f2d8',
client_secret: '7Gn0tuiHZiDHnzeu9P14uDQcSx9xIPPt')
If you need verbosity during troubleshooting, set the client to debug mode
client.debug = true
response = client.get_leads(:email, ['sammy@acme.com'])
response[:result].each do |result|
p "id: #{result[:id]}, email: #{result[:email]}"
end
response = client.createupdate_leads([{ email: 'sample@example.com', firstName: 'John' }], lookup_field: :email)
response[:result].each do |result|
p "id: #{result[:id]}, email: #{result[:email]}"
end
campaign_id = 42 # this is the ID of the campaign
lead_ids = [1, 2, 4] # these are the leads who receive the campaign
tokens = [{ # these tokens (optional) are then passed to the campaign
name: '{{my.message}}',
value: 'Updated message'
}, {
name: '{{my.other token}}',
value: 'Value for other token'
}]
client.request_campaign(campaign_id, lead_ids, tokens) # tokens can be omited
=> { requestId: 'e42b#14272d07d78', success: true }
The underlying Faraday connection can be completely customized
connection = Faraday.new(url: 'https://123-abc-123.mktorest.com') do |conn|
conn.request :multipart # required
conn.request :url_encoded # required
# Add request middleware to retry failed requests
conn.request(:retry,
max: 10,
interval: 0.05,
interval_randomness: 0.5,
backoff_factor: 2,
exceptions: [
Errno::ETIMEDOUT,
'Timeout::Error',
::Faraday::Error::TimeoutError,
::Faraday::ConnectionFailed
]
)
conn.response :logger, Rails.logger # Add a custom logger
conn.response :mkto, content_type: /\bjson$/ # required
conn.adapter Faraday.default_adapter
end
client = Mrkt::Client.new(
connection: connection,
host: '123-abc-123.mktorest.com',
client_id: '4567e1cdf-0fae-4685-a914-5be45043f2d8',
client_secret: '7Gn0tuiHZiDHnzeu9P14uDQcSx9xIPPt')
$ bundle exec rspec
Examples are in the spec/
directory.
- Fork it ( https://github.com/raszi/mrkt/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request