mrkt 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d12dd686225c6c59e0f4441adb10a1083e772080
4
- data.tar.gz: ac0595a8e7e88a52cfcf87ff2cf3fa3967144a80
3
+ metadata.gz: 19c375fe88c8b99a1d7af83714409133424c3e7c
4
+ data.tar.gz: 88ebcda5a1b3dad3aaaf593552961d78a0e45512
5
5
  SHA512:
6
- metadata.gz: dd7a1923389e9412dc1e82e943627a27e1b214bebc14d75a4f88fe90b1703a22cb7d45104b00409fd69cfff696078b345ecd5f0f415f9cb138049088da130ed2
7
- data.tar.gz: 210a3568aa5888b0eced93b20e6a8b3fbfc81465757608546dae933d638e24d603a40412d7260119fb28ff4b3762b511f876d5f96c4c50af875e5356a3e823bd
6
+ metadata.gz: a5ca3432d050e8caf2d44edb44fcef9ef4f7840ee66dd7516ec8c38bf11e1c52e31151ee2b9d299bb210ae047a95add038f06c18e997104c74b96c81dc69b898
7
+ data.tar.gz: e44bd10fec6bc3477fcaf42e2939c78cdd7efa6fa1f348d39561022856eb7d01d5487f440e19bdfaafe68dacb2c9bb2892b1a61b63c0ede684750c39747935d7
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ *.swp
@@ -3,5 +3,6 @@ rvm:
3
3
  - 2.0.0
4
4
  - 2.1.5
5
5
  - 2.2.0
6
+ - 2.3.1
6
7
  addons:
7
8
  code_climate: 45cd2174f49b570406e294ff393d456c4ae8532cf16dd6430abb06d8a0722a28
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mrkt (0.6.1)
5
- faraday_middleware (~> 0.9.1)
4
+ mrkt (0.6.2)
5
+ faraday_middleware (> 0.9.0, < 0.11.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
@@ -21,9 +21,9 @@ GEM
21
21
  safe_yaml (~> 1.0.0)
22
22
  diff-lcs (1.2.5)
23
23
  docile (1.1.5)
24
- faraday (0.9.1)
24
+ faraday (0.9.2)
25
25
  multipart-post (>= 1.2, < 3)
26
- faraday_middleware (0.9.1)
26
+ faraday_middleware (0.10.0)
27
27
  faraday (>= 0.7.4, < 0.10)
28
28
  json (1.8.2)
29
29
  method_source (0.8.2)
@@ -86,4 +86,4 @@ DEPENDENCIES
86
86
  webmock (~> 1.21.0)
87
87
 
88
88
  BUNDLED WITH
89
- 1.10.6
89
+ 1.11.2
data/README.md CHANGED
@@ -53,7 +53,7 @@ client.debug = true
53
53
  ### Get leads matching an email, print their id and email
54
54
 
55
55
  ```ruby
56
- response = client.get_leads(:email, 'sammy@acme.com')
56
+ response = client.get_leads(:email, ['sammy@acme.com'])
57
57
  response[:result].each do |result|
58
58
  p "id: #{result[:id]}, email: #{result[:email]}"
59
59
  end
@@ -8,6 +8,8 @@ require 'mrkt/concerns/crud_campaigns'
8
8
  require 'mrkt/concerns/crud_leads'
9
9
  require 'mrkt/concerns/crud_lists'
10
10
  require 'mrkt/concerns/import_leads'
11
+ require 'mrkt/concerns/crud_custom_objects'
12
+ require 'mrkt/concerns/crud_programs'
11
13
 
12
14
  module Mrkt
13
15
  class Client
@@ -18,6 +20,8 @@ module Mrkt
18
20
  include CrudLeads
19
21
  include CrudLists
20
22
  include ImportLeads
23
+ include CrudCustomObjects
24
+ include CrudPrograms
21
25
 
22
26
  attr_accessor :debug
23
27
 
@@ -0,0 +1,53 @@
1
+ module Mrkt
2
+ module CrudCustomObjects
3
+ def get_list_of_custom_objects(names=nil)
4
+ params = {}
5
+ params[:names] = names.join(',') if names
6
+
7
+ get('/rest/v1/customobjects.json', params)
8
+ end
9
+
10
+ def describe_custom_object(name)
11
+ fail Mrkt::Errors::Unknown unless name
12
+
13
+ get("/rest/v1/customobjects/#{name}/describe.json")
14
+ end
15
+
16
+ def createupdate_custom_objects(name, input, action: 'createOrUpdate', dedupe_by: 'dedupeFields')
17
+ post("/rest/v1/customobjects/#{name}.json") do |req|
18
+ params = {
19
+ input: input,
20
+ action: action,
21
+ dedupeBy: dedupe_by
22
+ }
23
+ json_payload(req, params)
24
+ end
25
+ end
26
+
27
+ def delete_custom_objects(name, input, delete_by: 'dedupeFields')
28
+ post("/rest/v1/customobjects/#{name}/delete.json") do |req|
29
+ params = {
30
+ input: input,
31
+ deleteBy: delete_by
32
+ }
33
+
34
+ json_payload(req, params)
35
+ end
36
+ end
37
+
38
+ def get_custom_objects(name, input, filter_type: 'dedupeFields', fields: nil, next_page_token: nil, batch_size: nil)
39
+ post("/rest/v1/customobjects/#{name}.json?_method=GET") do |req|
40
+ params = {
41
+ input: input,
42
+ filterType: filter_type
43
+ }
44
+
45
+ params[:fields] = fields if fields
46
+ params[:nextPageToken] = next_page_token if next_page_token
47
+ params[:batchSize] = batch_size if batch_size
48
+
49
+ json_payload(req, params)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,16 @@
1
+ module Mrkt
2
+ module CrudPrograms
3
+ def browse_programs(offset: nil, max_return: nil, status: nil)
4
+ params = {}
5
+ params[:offset] = offset if offset
6
+ params[:maxReturn] = max_return if max_return
7
+ params[:status] = status if status
8
+
9
+ get('/rest/asset/v1/programs.json', params)
10
+ end
11
+
12
+ def get_program_by_id(id)
13
+ get("/rest/asset/v1/program/#{id}.json")
14
+ end
15
+ end
16
+ end
@@ -1,3 +1,3 @@
1
1
  module Mrkt
2
- VERSION = '0.6.1'
2
+ VERSION = '0.6.2'
3
3
  end
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.required_ruby_version = '~> 2.0'
22
22
 
23
- spec.add_dependency 'faraday_middleware', '~> 0.9.1'
23
+ spec.add_dependency 'faraday_middleware', '> 0.9.0', '< 0.11.0'
24
24
 
25
25
  spec.add_development_dependency 'bundler', '~> 1.3'
26
26
  spec.add_development_dependency 'rake', '~> 10.0'
@@ -0,0 +1,259 @@
1
+ describe Mrkt::CrudCustomObjects do
2
+ include_context 'initialized client'
3
+
4
+ describe '#get_list_of_custom_objects' do
5
+ let(:response_stub) do
6
+ {
7
+ requestId: 'c245#14cd6830ae2',
8
+ result: [{
9
+ name: 'device_c',
10
+ displayName: 'Device',
11
+ description: 'this is a device object',
12
+ createdAt: '2016-01-23T00:51:18Z',
13
+ updatedAt: '2016-01-23T00:51:18Z',
14
+ idField: 'marketoGUID',
15
+ dedupeFields: ['serialNumber'],
16
+ searchableFields: [['serialNumber'], ['marketoGUID']],
17
+ relationships: [{
18
+ field: 'email',
19
+ type: 'child',
20
+ relatedTo: { name: 'Lead', field: 'email' }
21
+ }],
22
+ },
23
+ {
24
+ name: 'manufacturer_c',
25
+ displayName: 'Manufacturer',
26
+ createdAt: '2016-01-23T00:55:18Z',
27
+ updatedAt: '2016-01-23T00:55:18Z',
28
+ idField: 'marketoGUID',
29
+ dedupeFields: ['name'],
30
+ searchableFields: [['name'], ['marketoGUID']],
31
+ relationships: [{
32
+ field: 'email',
33
+ type: 'child',
34
+ relatedTo: { name: 'Lead', field: 'email' }
35
+ }]
36
+ }],
37
+ success: true
38
+ }
39
+ end
40
+
41
+ context 'with no object names' do
42
+ before do
43
+ stub_request(:get, "https://#{host}/rest/v1/customobjects.json")
44
+ .to_return(json_stub(response_stub))
45
+ end
46
+
47
+ subject { client.get_list_of_custom_objects }
48
+
49
+ it { is_expected.to eq(response_stub) }
50
+ end
51
+
52
+ context 'with object names' do
53
+ let(:object_names) { %w(device_c manufacturer_c) }
54
+
55
+ before do
56
+ stub_request(:get, "https://#{host}/rest/v1/customobjects.json")
57
+ .with(query: {names: object_names.join(',')})
58
+ .to_return(json_stub(response_stub))
59
+ end
60
+
61
+ subject { client.get_list_of_custom_objects(object_names) }
62
+
63
+ it { is_expected.to eq(response_stub) }
64
+ end
65
+ end
66
+
67
+ describe '#describe_custom_object' do
68
+ let(:response_stub) do
69
+ {
70
+ requestId: "eeef#152858b17d2",
71
+ result: [{
72
+ name: "device_c",
73
+ displayName: "Device",
74
+ description: "this is a device object",
75
+ createdAt: "2016-01-23T00:51:18Z",
76
+ updatedAt: "2016-01-23T00:51:18Z",
77
+ idField: "marketoGUID",
78
+ dedupeFields: ["serialNumber"],
79
+ searchableFields: [["serialNumber"], ["marketoGUID"]],
80
+ relationships: [{
81
+ field: "serialNumber",
82
+ type: "child",
83
+ relatedTo: {
84
+ name: "Lead",
85
+ field: "serialNumber"
86
+ }
87
+ }],
88
+ fields: [{
89
+ name: "createdAt",
90
+ displayName: "Created At",
91
+ dataType: "datetime",
92
+ updateable: false
93
+ },
94
+ { name: "marketoGUID",
95
+ displayName: "Marketo GUID",
96
+ dataType: "string",
97
+ length:36,
98
+ updateable: false
99
+ },
100
+ { name: "updatedAt",
101
+ displayName: "Updated At",
102
+ dataType: "datetime",
103
+ updateable: false
104
+ },
105
+ { name: "serialNumber",
106
+ displayName: "serial number",
107
+ dataType: "string",
108
+ length: 255,
109
+ updateable: true
110
+ }]
111
+ }],
112
+ success: true
113
+ }
114
+ end
115
+
116
+ before do
117
+ stub_request(:get, "https://#{host}/rest/v1/customobjects/#{object_name}/describe.json")
118
+ .to_return(json_stub(response_stub))
119
+ end
120
+
121
+ subject { client.describe_custom_object(object_name) }
122
+
123
+ context "when the object name is valid" do
124
+ let(:object_name) { :device_c }
125
+
126
+ it { is_expected.to eq(response_stub) }
127
+ end
128
+
129
+ context "when the object name is invalid" do
130
+ let(:object_name) { nil }
131
+
132
+ it 'should raise an Error' do
133
+ object_name = []
134
+ expect { subject }.to raise_error(Mrkt::Errors::Unknown)
135
+ end
136
+ end
137
+ end
138
+
139
+ describe "#createupdate_custom_objects" do
140
+ let(:object_name) { 'device' }
141
+
142
+ let(:devices) do
143
+ [{
144
+ serialNumber: 'serial_number_1',
145
+ description: 'device'
146
+ }]
147
+ end
148
+
149
+ let(:request_body) do
150
+ {
151
+ input: [{
152
+ serialNumber: 'serial_number_1',
153
+ description: 'device'
154
+ }],
155
+ action: 'createOrUpdate',
156
+ dedupeBy: 'dedupeFields'
157
+ }
158
+ end
159
+
160
+ let(:response_stub) do
161
+ {
162
+ requestId: 'c245#14cd6830ae2',
163
+ success: true,
164
+ result: [{
165
+ id: 1,
166
+ status: 'created'
167
+ }]
168
+ }
169
+ end
170
+
171
+ subject { client.createupdate_custom_objects(object_name, devices) }
172
+
173
+ before do
174
+ stub_request(:post, "https://#{host}/rest/v1/customobjects/#{object_name}.json")
175
+ .with(json_stub(request_body))
176
+ .to_return(json_stub(response_stub))
177
+ end
178
+
179
+ it { is_expected.to eq(response_stub) }
180
+ end
181
+
182
+ describe "#delete_custom_objects" do
183
+ let(:object_name) { 'device' }
184
+
185
+ let(:search_fields) do
186
+ { serialNumber: 'serial_number_1' }
187
+ end
188
+
189
+ let(:request_body) do
190
+ {
191
+ input: search_fields,
192
+ deleteBy: 'dedupeFields'
193
+ }
194
+ end
195
+
196
+ let(:response_stub) do
197
+ {
198
+ requestId: 'c245#14cd6830ae2',
199
+ success: true,
200
+ result: [{
201
+ seq: 0,
202
+ status: "deleted",
203
+ marketoGUID: "1fc49d4fcb86"
204
+ }]
205
+ }
206
+ end
207
+
208
+ subject { client.delete_custom_objects(object_name, search_fields) }
209
+
210
+ before do
211
+ stub_request(:post, "https://#{host}/rest/v1/customobjects/#{object_name}/delete.json")
212
+ .with(json_stub(request_body))
213
+ .to_return(json_stub(response_stub))
214
+ end
215
+
216
+ it { is_expected.to eq(response_stub) }
217
+ end
218
+
219
+ describe "#get_custom_objects" do
220
+ let(:object_name) { 'device'}
221
+
222
+ let(:filter_values) do
223
+ [{
224
+ serialNumber: 'serial_number_1'
225
+ }]
226
+ end
227
+
228
+ let(:request_body) do
229
+ {
230
+ input: filter_values,
231
+ filterType: 'dedupeFields'
232
+ }
233
+ end
234
+
235
+ let(:response_stub) do
236
+ {
237
+ requestId: "1490d#1528af5232",
238
+ result: [{
239
+ seq: 0,
240
+ marketoGUID: "163b231LPr23200e570",
241
+ serialNumber: "serial_number_1",
242
+ createdAt: "2016-01-23T05:01:01Z",
243
+ updatedAt: "2016-01-29T00:26:00Z"
244
+ }],
245
+ success: true
246
+ }
247
+ end
248
+
249
+ subject { client.get_custom_objects(object_name, filter_values) }
250
+
251
+ before do
252
+ stub_request(:post, "https://#{host}/rest/v1/customobjects/#{object_name}.json?_method=GET")
253
+ .with(json_stub(request_body))
254
+ .to_return(json_stub(response_stub))
255
+ end
256
+
257
+ it { is_expected.to eq(response_stub) }
258
+ end
259
+ end
@@ -0,0 +1,88 @@
1
+ describe Mrkt::CrudPrograms do
2
+ include_context 'initialized client'
3
+
4
+ describe '#browse_programs' do
5
+ let(:response_stub) do
6
+ {
7
+ success: true,
8
+ warnings: [],
9
+ errors: [],
10
+ requestId: '7a39#1511bf8a41c',
11
+ result: [
12
+ {
13
+ id: 1035,
14
+ name: 'clone it',
15
+ description: '',
16
+ createdAt: '2015-11-18T15:25:35Z+0000',
17
+ updatedAt: '2015-11-18T15:25:46Z+0000',
18
+ url: 'https://app-devlocal1.marketo.com/#NP1035A1',
19
+ type: 'Engagement',
20
+ channel: 'Nurture',
21
+ folder: {
22
+ type: 'Folder',
23
+ value: 28,
24
+ folderName: 'Nurturing'
25
+ },
26
+ status: 'on',
27
+ workspace: 'Default'
28
+ }
29
+ ]
30
+ }
31
+ end
32
+
33
+ subject { client.browse_programs }
34
+
35
+ before do
36
+ stub_request(:get, "https://#{host}/rest/asset/v1/programs.json")
37
+ .to_return(json_stub(response_stub))
38
+ end
39
+
40
+ it { is_expected.to eq(response_stub) }
41
+ end
42
+
43
+ describe '#get_program_by_id' do
44
+ let(:response_stub) do
45
+ {
46
+ success: true,
47
+ warnings: [],
48
+ errors: [],
49
+ requestId: '948f#14db037ec71',
50
+ result: [
51
+ {
52
+ id: 1107,
53
+ name: 'AAA2QueryProgramName',
54
+ description: 'AssetAPI: getProgram tests',
55
+ createdAt: '2015-05-21T22:45:13Z+0000',
56
+ updatedAt: '2015-05-21T22:45:13Z+0000',
57
+ url: 'https://app-devlocal1.marketo.com/#PG1107A1',
58
+ type: 'Default',
59
+ channel: 'Online Advertising',
60
+ folder: {
61
+ type: 'Folder',
62
+ value: 1910,
63
+ folderName: 'ProgramQueryTestFolder'
64
+ },
65
+ status: '',
66
+ workspace: 'Default',
67
+ tags: [
68
+ {
69
+ tagType: 'AAA1 Required Tag Type',
70
+ tagValue: 'AAA1 RT1'
71
+ }
72
+ ],
73
+ costs: nil
74
+ }
75
+ ]
76
+ }
77
+ end
78
+
79
+ subject { client.get_program_by_id(1107) }
80
+
81
+ before do
82
+ stub_request(:get, "https://#{host}/rest/asset/v1/program/1107.json")
83
+ .to_return(json_stub(response_stub))
84
+ end
85
+
86
+ it { is_expected.to eq(response_stub) }
87
+ end
88
+ end
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.1
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - KARASZI István
@@ -9,22 +9,28 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-27 00:00:00.000000000 Z
12
+ date: 2016-05-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday_middleware
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">"
19
+ - !ruby/object:Gem::Version
20
+ version: 0.9.0
21
+ - - "<"
19
22
  - !ruby/object:Gem::Version
20
- version: 0.9.1
23
+ version: 0.11.0
21
24
  type: :runtime
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
- - - "~>"
28
+ - - ">"
29
+ - !ruby/object:Gem::Version
30
+ version: 0.9.0
31
+ - - "<"
26
32
  - !ruby/object:Gem::Version
27
- version: 0.9.1
33
+ version: 0.11.0
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: bundler
30
36
  requirement: !ruby/object:Gem::Requirement
@@ -158,9 +164,11 @@ files:
158
164
  - lib/mrkt/concerns/authentication.rb
159
165
  - lib/mrkt/concerns/connection.rb
160
166
  - lib/mrkt/concerns/crud_campaigns.rb
167
+ - lib/mrkt/concerns/crud_custom_objects.rb
161
168
  - lib/mrkt/concerns/crud_helpers.rb
162
169
  - lib/mrkt/concerns/crud_leads.rb
163
170
  - lib/mrkt/concerns/crud_lists.rb
171
+ - lib/mrkt/concerns/crud_programs.rb
164
172
  - lib/mrkt/concerns/import_leads.rb
165
173
  - lib/mrkt/errors.rb
166
174
  - lib/mrkt/faraday_middleware.rb
@@ -169,8 +177,10 @@ files:
169
177
  - mrkt.gemspec
170
178
  - spec/concerns/authentication_spec.rb
171
179
  - spec/concerns/crud_campaigns_spec.rb
180
+ - spec/concerns/crud_custom_objects_spec.rb
172
181
  - spec/concerns/crud_leads_spec.rb
173
182
  - spec/concerns/crud_lists_spec.rb
183
+ - spec/concerns/crud_programs_spec.rb
174
184
  - spec/concerns/import_leads_spec.rb
175
185
  - spec/errors_spec.rb
176
186
  - spec/mkto_rest_spec.rb
@@ -197,15 +207,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
207
  version: '0'
198
208
  requirements: []
199
209
  rubyforge_project:
200
- rubygems_version: 2.4.8
210
+ rubygems_version: 2.5.1
201
211
  signing_key:
202
212
  specification_version: 4
203
213
  summary: Marketo REST API Facade
204
214
  test_files:
205
215
  - spec/concerns/authentication_spec.rb
206
216
  - spec/concerns/crud_campaigns_spec.rb
217
+ - spec/concerns/crud_custom_objects_spec.rb
207
218
  - spec/concerns/crud_leads_spec.rb
208
219
  - spec/concerns/crud_lists_spec.rb
220
+ - spec/concerns/crud_programs_spec.rb
209
221
  - spec/concerns/import_leads_spec.rb
210
222
  - spec/errors_spec.rb
211
223
  - spec/mkto_rest_spec.rb