mrkt 0.6.1 → 0.6.2

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 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