mrkt 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|