mrkt 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +15 -0
- data/Gemfile.lock +19 -1
- data/README.md +14 -0
- data/lib/mrkt.rb +6 -0
- data/lib/mrkt/concerns/crud_campaigns.rb +16 -0
- data/lib/mrkt/concerns/crud_helpers.rb +12 -0
- data/lib/mrkt/concerns/crud_leads.rb +3 -7
- data/lib/mrkt/concerns/crud_lists.rb +22 -0
- data/lib/mrkt/version.rb +1 -1
- data/mrkt.gemspec +2 -1
- data/spec/concerns/crud_campaigns_spec.rb +71 -0
- data/spec/concerns/crud_leads_spec.rb +1 -1
- data/spec/concerns/crud_lists_spec.rb +66 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/webmock.rb +1 -1
- metadata +25 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d12dd686225c6c59e0f4441adb10a1083e772080
|
4
|
+
data.tar.gz: ac0595a8e7e88a52cfcf87ff2cf3fa3967144a80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd7a1923389e9412dc1e82e943627a27e1b214bebc14d75a4f88fe90b1703a22cb7d45104b00409fd69cfff696078b345ecd5f0f415f9cb138049088da130ed2
|
7
|
+
data.tar.gz: 210a3568aa5888b0eced93b20e6a8b3fbfc81465757608546dae933d638e24d603a40412d7260119fb28ff4b3762b511f876d5f96c4c50af875e5356a3e823bd
|
data/.rubocop.yml
ADDED
data/Gemfile.lock
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mrkt (0.6.
|
4
|
+
mrkt (0.6.1)
|
5
5
|
faraday_middleware (~> 0.9.1)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
10
|
addressable (2.3.8)
|
11
|
+
ast (2.0.0)
|
12
|
+
astrolabe (1.3.1)
|
13
|
+
parser (~> 2.2)
|
11
14
|
byebug (4.0.5)
|
12
15
|
columnize (= 0.9.0)
|
13
16
|
codeclimate-test-reporter (0.4.7)
|
@@ -25,6 +28,9 @@ GEM
|
|
25
28
|
json (1.8.2)
|
26
29
|
method_source (0.8.2)
|
27
30
|
multipart-post (2.0.0)
|
31
|
+
parser (2.2.2.6)
|
32
|
+
ast (>= 1.1, < 3.0)
|
33
|
+
powerpack (0.1.1)
|
28
34
|
pry (0.10.1)
|
29
35
|
coderay (~> 1.1.0)
|
30
36
|
method_source (~> 0.8.1)
|
@@ -32,6 +38,7 @@ GEM
|
|
32
38
|
pry-byebug (3.1.0)
|
33
39
|
byebug (~> 4.0)
|
34
40
|
pry (~> 0.10)
|
41
|
+
rainbow (2.0.0)
|
35
42
|
rake (10.1.1)
|
36
43
|
rspec (3.2.0)
|
37
44
|
rspec-core (~> 3.2.0)
|
@@ -46,6 +53,13 @@ GEM
|
|
46
53
|
diff-lcs (>= 1.2.0, < 2.0)
|
47
54
|
rspec-support (~> 3.2.0)
|
48
55
|
rspec-support (3.2.2)
|
56
|
+
rubocop (0.32.1)
|
57
|
+
astrolabe (~> 1.3)
|
58
|
+
parser (>= 2.2.2.5, < 3.0)
|
59
|
+
powerpack (~> 0.1)
|
60
|
+
rainbow (>= 1.99.1, < 3.0)
|
61
|
+
ruby-progressbar (~> 1.4)
|
62
|
+
ruby-progressbar (1.7.5)
|
49
63
|
safe_yaml (1.0.4)
|
50
64
|
simplecov (0.10.0)
|
51
65
|
docile (~> 1.1.0)
|
@@ -67,5 +81,9 @@ DEPENDENCIES
|
|
67
81
|
pry-byebug (~> 3.1.0)
|
68
82
|
rake (~> 10.0)
|
69
83
|
rspec (~> 3.2)
|
84
|
+
rubocop (~> 0.32.1)
|
70
85
|
simplecov (~> 0.10.0)
|
71
86
|
webmock (~> 1.21.0)
|
87
|
+
|
88
|
+
BUNDLED WITH
|
89
|
+
1.10.6
|
data/README.md
CHANGED
@@ -68,6 +68,20 @@ response[:result].each do |result|
|
|
68
68
|
end
|
69
69
|
```
|
70
70
|
|
71
|
+
### Run a smart campaign on existing leads
|
72
|
+
```ruby
|
73
|
+
campaign_id = 42 # this is the ID of the campaign
|
74
|
+
lead_ids = [1, 2, 4] # these are the leads who receive the campaign
|
75
|
+
tokens = [{ # these tokens (optional) are then passed to the campaign
|
76
|
+
name: '{{my.message}}',
|
77
|
+
value: 'Updated message'
|
78
|
+
}, {
|
79
|
+
name: '{{my.other token}}',
|
80
|
+
value: 'Value for other token'
|
81
|
+
}]
|
82
|
+
client.request_campaign(campaign_id, lead_ids, tokens) # tokens can be omited
|
83
|
+
=> { requestId: 'e42b#14272d07d78', success: true }
|
84
|
+
```
|
71
85
|
|
72
86
|
## Run Tests
|
73
87
|
|
data/lib/mrkt.rb
CHANGED
@@ -3,14 +3,20 @@ require 'mrkt/errors'
|
|
3
3
|
|
4
4
|
require 'mrkt/concerns/connection'
|
5
5
|
require 'mrkt/concerns/authentication'
|
6
|
+
require 'mrkt/concerns/crud_helpers'
|
7
|
+
require 'mrkt/concerns/crud_campaigns'
|
6
8
|
require 'mrkt/concerns/crud_leads'
|
9
|
+
require 'mrkt/concerns/crud_lists'
|
7
10
|
require 'mrkt/concerns/import_leads'
|
8
11
|
|
9
12
|
module Mrkt
|
10
13
|
class Client
|
11
14
|
include Connection
|
12
15
|
include Authentication
|
16
|
+
include CrudHelpers
|
17
|
+
include CrudCampaigns
|
13
18
|
include CrudLeads
|
19
|
+
include CrudLists
|
14
20
|
include ImportLeads
|
15
21
|
|
16
22
|
attr_accessor :debug
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Mrkt
|
2
|
+
module CrudCampaigns
|
3
|
+
def request_campaign(id, lead_ids, tokens = {})
|
4
|
+
post("/rest/v1/campaigns/#{id}/trigger.json") do |req|
|
5
|
+
params = {
|
6
|
+
input: {
|
7
|
+
leads: map_lead_ids(lead_ids),
|
8
|
+
tokens: tokens
|
9
|
+
}
|
10
|
+
}
|
11
|
+
|
12
|
+
json_payload(req, params)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -12,7 +12,7 @@ module Mrkt
|
|
12
12
|
get('/rest/v1/leads.json', params)
|
13
13
|
end
|
14
14
|
|
15
|
-
def createupdate_leads(leads, action: 'createOrUpdate', lookup_field: nil, partition_name: nil)
|
15
|
+
def createupdate_leads(leads, action: 'createOrUpdate', lookup_field: nil, partition_name: nil, async_processing: nil)
|
16
16
|
post('/rest/v1/leads.json') do |req|
|
17
17
|
params = {
|
18
18
|
action: action,
|
@@ -20,6 +20,7 @@ module Mrkt
|
|
20
20
|
}
|
21
21
|
params[:lookupField] = lookup_field if lookup_field
|
22
22
|
params[:partitionName] = partition_name if partition_name
|
23
|
+
params[:asyncProcessing] = async_processing if async_processing
|
23
24
|
|
24
25
|
json_payload(req, params)
|
25
26
|
end
|
@@ -27,15 +28,10 @@ module Mrkt
|
|
27
28
|
|
28
29
|
def delete_leads(leads)
|
29
30
|
delete('/rest/v1/leads.json') do |req|
|
30
|
-
json_payload(req, input: leads
|
31
|
+
json_payload(req, input: map_lead_ids(leads))
|
31
32
|
end
|
32
33
|
end
|
33
34
|
|
34
|
-
def json_payload(req, payload)
|
35
|
-
req.headers[:content_type] = 'application/json'
|
36
|
-
req.body = JSON.generate(payload)
|
37
|
-
end
|
38
|
-
|
39
35
|
def associate_lead(id, cookie)
|
40
36
|
params = Faraday::Utils::ParamsHash.new
|
41
37
|
params[:cookie] = cookie
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Mrkt
|
2
|
+
module CrudLists
|
3
|
+
def get_leads_by_list(list_id, fields: nil, batch_size: nil, next_page_token: nil)
|
4
|
+
params = {}
|
5
|
+
params[:fields] = fields if fields
|
6
|
+
params[:batchSize] = batch_size if batch_size
|
7
|
+
params[:nextPageToken] = next_page_token if next_page_token
|
8
|
+
|
9
|
+
get("/rest/v1/list/#{list_id}/leads.json", params)
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_leads_to_list(list_id, lead_ids)
|
13
|
+
post("/rest/v1/lists/#{list_id}/leads.json") do |req|
|
14
|
+
params = {
|
15
|
+
input: map_lead_ids(lead_ids)
|
16
|
+
}
|
17
|
+
|
18
|
+
json_payload(req, params)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/mrkt/version.rb
CHANGED
data/mrkt.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.homepage = 'https://github.com/raszi/mrkt'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
|
-
spec.files = `git ls-files`.split(
|
16
|
+
spec.files = `git ls-files`.split($RS)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = %w(lib)
|
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
|
|
29
29
|
spec.add_development_dependency 'simplecov', '~> 0.10.0'
|
30
30
|
spec.add_development_dependency 'pry-byebug', '~> 3.1.0'
|
31
31
|
spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.4.7'
|
32
|
+
spec.add_development_dependency 'rubocop', '~> 0.32.1'
|
32
33
|
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
describe Mrkt::CrudCampaigns do
|
2
|
+
include_context 'initialized client'
|
3
|
+
|
4
|
+
describe '#request_campaign' do
|
5
|
+
let(:id) { 42 }
|
6
|
+
let(:lead_ids) { [1234, 5678] }
|
7
|
+
let(:tokens) do
|
8
|
+
[{
|
9
|
+
name: '{{my.message}}',
|
10
|
+
value: 'Updated message'
|
11
|
+
}, {
|
12
|
+
name: '{{my.other token}}',
|
13
|
+
value: 'Value for other token'
|
14
|
+
}]
|
15
|
+
end
|
16
|
+
subject { client.request_campaign(id, lead_ids, tokens) }
|
17
|
+
|
18
|
+
before do
|
19
|
+
stub_request(:post, "https://#{host}/rest/v1/campaigns/#{id}/trigger.json")
|
20
|
+
.with(body: { input: { leads: lead_ids.map { |id| { id: id } }, tokens: tokens } })
|
21
|
+
.to_return(json_stub(response_stub))
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with an invalid campaign id' do
|
25
|
+
let(:response_stub) do
|
26
|
+
{
|
27
|
+
requestId: 'a9b#14eb6771358',
|
28
|
+
success: false,
|
29
|
+
errors: [{
|
30
|
+
code: '1013',
|
31
|
+
message: 'Campaign not found'
|
32
|
+
}]
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should raise an Error' do
|
37
|
+
expect { subject }.to raise_error(Mrkt::Errors::ObjectNotFound)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'with valid campaign id' do
|
42
|
+
context 'with invalid lead id' do
|
43
|
+
let(:response_stub) do
|
44
|
+
{
|
45
|
+
requestId: '7cdc#14eb6ae8a86',
|
46
|
+
success: false,
|
47
|
+
errors: [{
|
48
|
+
code: '1004',
|
49
|
+
message: 'Lead [1234] not found'
|
50
|
+
}]
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'should raise an Error' do
|
55
|
+
expect { subject }.to raise_error(Mrkt::Errors::LeadNotFound)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
context 'for valid lead ids' do
|
60
|
+
let(:response_stub) do
|
61
|
+
{
|
62
|
+
requestId: 'e42b#14272d07d78',
|
63
|
+
success: true
|
64
|
+
}
|
65
|
+
end
|
66
|
+
|
67
|
+
it { is_expected.to eq(response_stub) }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
describe Mrkt::CrudLists do
|
2
|
+
include_context 'initialized client'
|
3
|
+
|
4
|
+
describe '#get_leads_by_list' do
|
5
|
+
let(:list_id) { '1001' }
|
6
|
+
let(:response_stub) do
|
7
|
+
{
|
8
|
+
requestId: 'ab12#12d6ab65024',
|
9
|
+
result: [
|
10
|
+
{
|
11
|
+
id: 1,
|
12
|
+
firstName: nil,
|
13
|
+
lastName: nil,
|
14
|
+
email: 'sample@example.com',
|
15
|
+
updatedAt: '2015-05-19 13:50:57',
|
16
|
+
createdAt: '2015-05-19 13:50:57'
|
17
|
+
}
|
18
|
+
],
|
19
|
+
success: true
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
subject { client.get_leads_by_list(list_id) }
|
24
|
+
|
25
|
+
before do
|
26
|
+
stub_request(:get, "https://#{host}/rest/v1/list/#{list_id}/leads.json")
|
27
|
+
.with(query: {})
|
28
|
+
.to_return(json_stub(response_stub))
|
29
|
+
end
|
30
|
+
|
31
|
+
it { is_expected.to eq(response_stub) }
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#add_leads_to_list' do
|
35
|
+
let(:list_id) { '1001' }
|
36
|
+
let(:lead_ids) { ['1'] }
|
37
|
+
let(:request_body) do
|
38
|
+
{
|
39
|
+
input: [
|
40
|
+
{ id: '1' }
|
41
|
+
]
|
42
|
+
}
|
43
|
+
end
|
44
|
+
let(:response_stub) do
|
45
|
+
{
|
46
|
+
requestId: '16d3f#14d6da7449f',
|
47
|
+
result: [
|
48
|
+
{
|
49
|
+
id: 1,
|
50
|
+
status: 'added'
|
51
|
+
}
|
52
|
+
],
|
53
|
+
success: true
|
54
|
+
}
|
55
|
+
end
|
56
|
+
subject { client.add_leads_to_list(list_id, lead_ids) }
|
57
|
+
|
58
|
+
before do
|
59
|
+
stub_request(:post, "https://#{host}/rest/v1/lists/#{list_id}/leads.json")
|
60
|
+
.with(json_stub(request_body))
|
61
|
+
.to_return(json_stub(response_stub))
|
62
|
+
end
|
63
|
+
|
64
|
+
it { is_expected.to eq(response_stub) }
|
65
|
+
end
|
66
|
+
end
|
data/spec/spec_helper.rb
CHANGED
data/spec/support/webmock.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mrkt
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- KARASZI István
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-07-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: faraday_middleware
|
@@ -123,6 +123,20 @@ dependencies:
|
|
123
123
|
- - "~>"
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: 0.4.7
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: rubocop
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - "~>"
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: 0.32.1
|
133
|
+
type: :development
|
134
|
+
prerelease: false
|
135
|
+
version_requirements: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - "~>"
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: 0.32.1
|
126
140
|
description: This gem helps you to use the Marketo REST API
|
127
141
|
email:
|
128
142
|
- github@spam.raszi.hu
|
@@ -133,6 +147,7 @@ extra_rdoc_files: []
|
|
133
147
|
files:
|
134
148
|
- ".gitignore"
|
135
149
|
- ".rspec"
|
150
|
+
- ".rubocop.yml"
|
136
151
|
- ".travis.yml"
|
137
152
|
- Gemfile
|
138
153
|
- Gemfile.lock
|
@@ -142,7 +157,10 @@ files:
|
|
142
157
|
- lib/mrkt.rb
|
143
158
|
- lib/mrkt/concerns/authentication.rb
|
144
159
|
- lib/mrkt/concerns/connection.rb
|
160
|
+
- lib/mrkt/concerns/crud_campaigns.rb
|
161
|
+
- lib/mrkt/concerns/crud_helpers.rb
|
145
162
|
- lib/mrkt/concerns/crud_leads.rb
|
163
|
+
- lib/mrkt/concerns/crud_lists.rb
|
146
164
|
- lib/mrkt/concerns/import_leads.rb
|
147
165
|
- lib/mrkt/errors.rb
|
148
166
|
- lib/mrkt/faraday_middleware.rb
|
@@ -150,7 +168,9 @@ files:
|
|
150
168
|
- lib/mrkt/version.rb
|
151
169
|
- mrkt.gemspec
|
152
170
|
- spec/concerns/authentication_spec.rb
|
171
|
+
- spec/concerns/crud_campaigns_spec.rb
|
153
172
|
- spec/concerns/crud_leads_spec.rb
|
173
|
+
- spec/concerns/crud_lists_spec.rb
|
154
174
|
- spec/concerns/import_leads_spec.rb
|
155
175
|
- spec/errors_spec.rb
|
156
176
|
- spec/mkto_rest_spec.rb
|
@@ -177,13 +197,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
197
|
version: '0'
|
178
198
|
requirements: []
|
179
199
|
rubyforge_project:
|
180
|
-
rubygems_version: 2.4.
|
200
|
+
rubygems_version: 2.4.8
|
181
201
|
signing_key:
|
182
202
|
specification_version: 4
|
183
203
|
summary: Marketo REST API Facade
|
184
204
|
test_files:
|
185
205
|
- spec/concerns/authentication_spec.rb
|
206
|
+
- spec/concerns/crud_campaigns_spec.rb
|
186
207
|
- spec/concerns/crud_leads_spec.rb
|
208
|
+
- spec/concerns/crud_lists_spec.rb
|
187
209
|
- spec/concerns/import_leads_spec.rb
|
188
210
|
- spec/errors_spec.rb
|
189
211
|
- spec/mkto_rest_spec.rb
|