soapy_cake 2.2.1 → 2.2.3
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/.ruby-version +1 -1
- data/lib/soapy_cake/admin_addedit.rb +52 -0
- data/lib/soapy_cake/client.rb +7 -2
- data/lib/soapy_cake/error.rb +12 -1
- data/lib/soapy_cake/version.rb +1 -1
- data/soapy_cake.gemspec +4 -5
- data/spec/fixtures/vcr_cassettes/SoapyCake_AdminAddedit/_create_creatives/creates_a_creative_and_adds_a_file_to_it.yml +116 -0
- data/spec/integration/soapy_cake/admin_addedit_spec.rb +21 -0
- data/spec/integration/soapy_cake/admin_spec.rb +6 -3
- data/spec/lib/soapy_cake/admin_addedit_spec.rb +42 -0
- data/spec/lib/soapy_cake/request_failed_spec.rb +22 -0
- data/spec/lib/soapy_cake/response_spec.rb +3 -6
- data/spec/lib/soapy_cake/time_converter_spec.rb +2 -0
- metadata +21 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db53a85a24c32bedc5424cb71fa94299d1b2b656
|
4
|
+
data.tar.gz: 6ff419a8734b6c665d239c9f277abfce3a6e7d3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e7ef921b6577c7e37f9fc448199f1b832ff556cd9ad63dfc2db1377a66160185eda2669f1067c48a7266155d2190f6f45699fa8c0f42b266981faaf8ff949d91
|
7
|
+
data.tar.gz: 7be351d763c9cafebd1f500e6a3cf6b3c879e26e821d96e7e701f09ec103a6e798037dca7d87aa5e8157a2a217ff345f7fc8e86693945551a3e157e73c14052a
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4.1
|
@@ -174,8 +174,60 @@ module SoapyCake
|
|
174
174
|
run Request.new(:admin, :addedit, :advertiser, opts.merge(advertiser_id: 0))
|
175
175
|
end
|
176
176
|
|
177
|
+
ALLOWED_CREATIVE_OPTS = %i[
|
178
|
+
creative_name
|
179
|
+
creative_status_id
|
180
|
+
creative_type_id
|
181
|
+
height
|
182
|
+
notes
|
183
|
+
offer_id
|
184
|
+
offer_link
|
185
|
+
third_party_name
|
186
|
+
width
|
187
|
+
].freeze
|
188
|
+
|
189
|
+
ALLOWED_CREATIVE_FILES_OPTS = %i[
|
190
|
+
creative_file_id
|
191
|
+
creative_file_import_url
|
192
|
+
creative_id
|
193
|
+
is_preview_file
|
194
|
+
replace_all_files
|
195
|
+
].freeze
|
196
|
+
|
197
|
+
def create_creative(opts)
|
198
|
+
raise 'need offer_id to create creative' if opts[:offer_id].blank?
|
199
|
+
raise 'cannot pass creative_id when creating creative' if opts[:creative_id].present?
|
200
|
+
|
201
|
+
creative_opts = opts.select { |key, _| ALLOWED_CREATIVE_OPTS.include? key }
|
202
|
+
create_result = addedit_creative(creative_opts)
|
203
|
+
|
204
|
+
files_opts = opts.select { |key, _| ALLOWED_CREATIVE_FILES_OPTS.include? key }
|
205
|
+
.merge(creative_id: create_result[:creative_id])
|
206
|
+
|
207
|
+
create_result.merge(addedit_creative_files(files_opts)).except(:message)
|
208
|
+
end
|
209
|
+
|
177
210
|
private
|
178
211
|
|
212
|
+
def addedit_creative(opts)
|
213
|
+
defaults = {
|
214
|
+
creative_name: '',
|
215
|
+
creative_status_id: 1, # Active: 1, Inactive: 2, Hidden: 3
|
216
|
+
creative_type_id: 3, # Link: 1, Image: 3, Flash: 4, HTML: 6, Email: 2, Text: 5, Video: 7
|
217
|
+
height: 0,
|
218
|
+
notes: '',
|
219
|
+
offer_link: '',
|
220
|
+
third_party_name: '',
|
221
|
+
width: 0
|
222
|
+
}
|
223
|
+
|
224
|
+
run Request.new(:admin, :addedit, :creative, defaults.merge(opts))
|
225
|
+
end
|
226
|
+
|
227
|
+
def addedit_creative_files(opts)
|
228
|
+
run Request.new(:admin, :addedit, :creative_files, opts)
|
229
|
+
end
|
230
|
+
|
179
231
|
def addedit_offer_tier(add_edit_option, opts)
|
180
232
|
require_params(opts, %i[offer_id tier_id price_format_id offer_contract_id status_id])
|
181
233
|
|
data/lib/soapy_cake/client.rb
CHANGED
@@ -36,7 +36,7 @@ module SoapyCake
|
|
36
36
|
|
37
37
|
protected
|
38
38
|
|
39
|
-
attr_reader :domain, :api_key, :time_converter, :opts, :
|
39
|
+
attr_reader :domain, :api_key, :time_converter, :opts, :retry_count, :write_enabled
|
40
40
|
|
41
41
|
private
|
42
42
|
|
@@ -82,7 +82,12 @@ module SoapyCake
|
|
82
82
|
response = perform_http_request(http_request)
|
83
83
|
|
84
84
|
unless response.is_a?(Net::HTTPSuccess)
|
85
|
-
raise RequestFailed
|
85
|
+
raise RequestFailed.new(
|
86
|
+
"Request failed with HTTP #{response.code}",
|
87
|
+
request_path: request.path,
|
88
|
+
request_body: http_request.body,
|
89
|
+
response_body: response.body
|
90
|
+
)
|
86
91
|
end
|
87
92
|
|
88
93
|
response.body
|
data/lib/soapy_cake/error.rb
CHANGED
@@ -2,6 +2,17 @@
|
|
2
2
|
|
3
3
|
module SoapyCake
|
4
4
|
class Error < RuntimeError; end
|
5
|
-
|
5
|
+
|
6
|
+
class RequestFailed < Error
|
7
|
+
attr_reader :request_path, :request_body, :response_body
|
8
|
+
|
9
|
+
def initialize(message, request_path: nil, request_body: nil, response_body: nil)
|
10
|
+
@request_path = request_path
|
11
|
+
@request_body = request_body&.sub(ENV.fetch('CAKE_API_KEY'), '[redacted]')
|
12
|
+
@response_body = response_body
|
13
|
+
super(message)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
6
17
|
class RateLimitError < RequestFailed; end
|
7
18
|
end
|
data/lib/soapy_cake/version.rb
CHANGED
data/soapy_cake.gemspec
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
# frozen_string_literal: true
|
3
2
|
|
4
3
|
lib = File.expand_path('../lib', __FILE__)
|
@@ -21,16 +20,16 @@ Gem::Specification.new do |spec|
|
|
21
20
|
spec.require_paths = ['lib']
|
22
21
|
|
23
22
|
spec.add_dependency 'activesupport'
|
24
|
-
spec.add_dependency 'saxerator'
|
25
23
|
spec.add_dependency 'nokogiri'
|
26
24
|
spec.add_dependency 'retryable'
|
25
|
+
spec.add_dependency 'saxerator'
|
27
26
|
|
28
27
|
spec.add_development_dependency 'bundler'
|
28
|
+
spec.add_development_dependency 'dotenv'
|
29
|
+
spec.add_development_dependency 'pry'
|
29
30
|
spec.add_development_dependency 'rake'
|
30
31
|
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
32
|
+
spec.add_development_dependency 'timecop'
|
31
33
|
spec.add_development_dependency 'vcr'
|
32
34
|
spec.add_development_dependency 'webmock'
|
33
|
-
spec.add_development_dependency 'pry'
|
34
|
-
spec.add_development_dependency 'timecop'
|
35
|
-
spec.add_development_dependency 'dotenv'
|
36
35
|
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://cake-partner-domain.com/api/1/addedit.asmx
|
6
|
+
body:
|
7
|
+
encoding: ASCII-8BIT
|
8
|
+
string: |
|
9
|
+
<?xml version="1.0"?>
|
10
|
+
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:cake="http://cakemarketing.com/api/1/">
|
11
|
+
<env:Header/>
|
12
|
+
<env:Body>
|
13
|
+
<cake:Creative>
|
14
|
+
<cake:api_key>cake-api-key</cake:api_key>
|
15
|
+
<cake:creative_name>creative_name</cake:creative_name>
|
16
|
+
<cake:creative_status_id>1</cake:creative_status_id>
|
17
|
+
<cake:creative_type_id>3</cake:creative_type_id>
|
18
|
+
<cake:height>0</cake:height>
|
19
|
+
<cake:notes/>
|
20
|
+
<cake:offer_link/>
|
21
|
+
<cake:third_party_name/>
|
22
|
+
<cake:width>0</cake:width>
|
23
|
+
<cake:offer_id>11428</cake:offer_id>
|
24
|
+
</cake:Creative>
|
25
|
+
</env:Body>
|
26
|
+
</env:Envelope>
|
27
|
+
headers:
|
28
|
+
Content-Type:
|
29
|
+
- application/soap+xml;charset=UTF-8
|
30
|
+
Accept-Encoding:
|
31
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
32
|
+
Accept:
|
33
|
+
- "*/*"
|
34
|
+
User-Agent:
|
35
|
+
- Ruby
|
36
|
+
response:
|
37
|
+
status:
|
38
|
+
code: 200
|
39
|
+
message: OK
|
40
|
+
headers:
|
41
|
+
Cache-Control:
|
42
|
+
- private, max-age=0
|
43
|
+
Content-Length:
|
44
|
+
- '450'
|
45
|
+
Content-Type:
|
46
|
+
- application/soap+xml; charset=utf-8
|
47
|
+
Date:
|
48
|
+
- Thu, 03 Aug 2017 09:25:39 GMT
|
49
|
+
X-Aspnet-Version:
|
50
|
+
- 4.0.30319
|
51
|
+
X-Powered-By:
|
52
|
+
- ASP.NET
|
53
|
+
Connection:
|
54
|
+
- close
|
55
|
+
body:
|
56
|
+
encoding: UTF-8
|
57
|
+
string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
|
58
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><CreativeResponse
|
59
|
+
xmlns="http://cakemarketing.com/api/1/"><CreativeResult><success>true</success><message>Creative
|
60
|
+
12164 Created</message><creative_id>12164</creative_id></CreativeResult></CreativeResponse></soap:Body></soap:Envelope>
|
61
|
+
http_version:
|
62
|
+
recorded_at: Tue, 17 Feb 2015 12:00:00 GMT
|
63
|
+
- request:
|
64
|
+
method: post
|
65
|
+
uri: https://cake-partner-domain.com/api/1/addedit.asmx
|
66
|
+
body:
|
67
|
+
encoding: ASCII-8BIT
|
68
|
+
string: |
|
69
|
+
<?xml version="1.0"?>
|
70
|
+
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:cake="http://cakemarketing.com/api/1/">
|
71
|
+
<env:Header/>
|
72
|
+
<env:Body>
|
73
|
+
<cake:CreativeFiles>
|
74
|
+
<cake:api_key>cake-api-key</cake:api_key>
|
75
|
+
<cake:creative_file_import_url>http://placehold.it/300x250</cake:creative_file_import_url>
|
76
|
+
<cake:creative_id>12164</cake:creative_id>
|
77
|
+
</cake:CreativeFiles>
|
78
|
+
</env:Body>
|
79
|
+
</env:Envelope>
|
80
|
+
headers:
|
81
|
+
Content-Type:
|
82
|
+
- application/soap+xml;charset=UTF-8
|
83
|
+
Accept-Encoding:
|
84
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
85
|
+
Accept:
|
86
|
+
- "*/*"
|
87
|
+
User-Agent:
|
88
|
+
- Ruby
|
89
|
+
response:
|
90
|
+
status:
|
91
|
+
code: 200
|
92
|
+
message: OK
|
93
|
+
headers:
|
94
|
+
Cache-Control:
|
95
|
+
- private, max-age=0
|
96
|
+
Content-Length:
|
97
|
+
- '621'
|
98
|
+
Content-Type:
|
99
|
+
- application/soap+xml; charset=utf-8
|
100
|
+
Date:
|
101
|
+
- Thu, 03 Aug 2017 09:25:40 GMT
|
102
|
+
X-Aspnet-Version:
|
103
|
+
- 4.0.30319
|
104
|
+
X-Powered-By:
|
105
|
+
- ASP.NET
|
106
|
+
Connection:
|
107
|
+
- close
|
108
|
+
body:
|
109
|
+
encoding: UTF-8
|
110
|
+
string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
|
111
|
+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><CreativeFilesResponse
|
112
|
+
xmlns="http://cakemarketing.com/api/1/"><CreativeFilesResult><success>true</success><message>Creative
|
113
|
+
Files 8015 Created.</message><creative_files><creative_file><creative_file_id>8015</creative_file_id><creative_file_name>300x250</creative_file_name><updated>false</updated></creative_file></creative_files></CreativeFilesResult></CreativeFilesResponse></soap:Body></soap:Envelope>
|
114
|
+
http_version:
|
115
|
+
recorded_at: Tue, 17 Feb 2015 12:00:00 GMT
|
116
|
+
recorded_with: VCR 3.0.3
|
@@ -284,4 +284,25 @@ RSpec.describe SoapyCake::AdminAddedit do
|
|
284
284
|
expect(result[:message]).to eq('Offer Tier Replaced')
|
285
285
|
end
|
286
286
|
end
|
287
|
+
|
288
|
+
describe '#create_creatives' do
|
289
|
+
it 'creates a creative and adds a file to it', :vcr do
|
290
|
+
result = admin_addedit.create_creative(
|
291
|
+
offer_id: 11428,
|
292
|
+
creative_name: 'creative_name',
|
293
|
+
creative_file_import_url: 'http://placehold.it/300x250'
|
294
|
+
)
|
295
|
+
expect(result).to eq(
|
296
|
+
creative_files: {
|
297
|
+
creative_file: {
|
298
|
+
creative_file_id: 8015,
|
299
|
+
creative_file_name: '300x250',
|
300
|
+
updated: false
|
301
|
+
}
|
302
|
+
},
|
303
|
+
creative_id: 12164,
|
304
|
+
success: true
|
305
|
+
)
|
306
|
+
end
|
307
|
+
end
|
287
308
|
end
|
@@ -66,9 +66,12 @@ RSpec.describe SoapyCake::Admin do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
it 'raises if there is an error', :vcr do
|
69
|
-
expect
|
70
|
-
|
71
|
-
|
69
|
+
expect { admin.affiliates(affiliate_id: 'bloops') }
|
70
|
+
.to raise_error(SoapyCake::RequestFailed) do |e|
|
71
|
+
expect(e.request_path).to eq('/api/5/export.asmx')
|
72
|
+
expect(e.request_body).to include('<cake:affiliate_id>bloops</cake:affiliate_id>')
|
73
|
+
expect(e.response_body).to include('There is an error in XML document')
|
74
|
+
end
|
72
75
|
end
|
73
76
|
|
74
77
|
it 'creates an affiliate and returns the ID', :vcr do
|
@@ -136,4 +136,46 @@ RSpec.describe SoapyCake::AdminAddedit do
|
|
136
136
|
admin_addedit.add_geo_targets(base_opts)
|
137
137
|
end
|
138
138
|
end
|
139
|
+
|
140
|
+
describe '#create_creative' do
|
141
|
+
context 'when no offer id was passed' do
|
142
|
+
it 'raises an error' do
|
143
|
+
expect { admin_addedit.create_creative({}) }.to raise_error(
|
144
|
+
'need offer_id to create creative'
|
145
|
+
)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
context 'when creative id was passed' do
|
150
|
+
it 'raises an error' do
|
151
|
+
expect { admin_addedit.create_creative(offer_id: 10, creative_id: 11) }.to raise_error(
|
152
|
+
'cannot pass creative_id when creating creative'
|
153
|
+
)
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
context 'when given the right parameters' do
|
158
|
+
it 'creates a creative and adds a file to it' do
|
159
|
+
expect(admin_addedit).to receive(:addedit_creative).with(
|
160
|
+
offer_id: 10, creative_name: 'creative_name'
|
161
|
+
).and_return(
|
162
|
+
success: true, message: 'Creative 12163 Created', creative_id: 12163
|
163
|
+
)
|
164
|
+
expect(admin_addedit).to receive(:addedit_creative_files).with(
|
165
|
+
creative_id: 12163, creative_file_import_url: 'http://www.example.org/image.png'
|
166
|
+
).and_return(
|
167
|
+
success: true, message: 'Creative Files 8013 Created.', creative_files: {
|
168
|
+
creative_file: {
|
169
|
+
creative_file_id: 8013, creative_file_name: 'image.jpg', updated: false
|
170
|
+
}
|
171
|
+
}
|
172
|
+
)
|
173
|
+
admin_addedit.create_creative(
|
174
|
+
offer_id: 10,
|
175
|
+
creative_name: 'creative_name',
|
176
|
+
creative_file_import_url: 'http://www.example.org/image.png'
|
177
|
+
)
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
139
181
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
RSpec.describe SoapyCake::RequestFailed do
|
4
|
+
it 'has request related attributes' do
|
5
|
+
error = described_class.new(
|
6
|
+
'Boo!',
|
7
|
+
request_path: 'request path',
|
8
|
+
request_body: 'request body',
|
9
|
+
response_body: 'response body'
|
10
|
+
)
|
11
|
+
expect(error).to have_attributes(
|
12
|
+
'request_path' => 'request path',
|
13
|
+
'request_body' => 'request body',
|
14
|
+
'response_body' => 'response body'
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'redacts the API key from the request body' do
|
19
|
+
error = described_class.new('Boo!', request_body: ">#{ENV.fetch('CAKE_API_KEY')}<")
|
20
|
+
expect(error.request_body).to eq('>[redacted]<')
|
21
|
+
end
|
22
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
RSpec.describe SoapyCake::Response do
|
4
4
|
let(:xml) do
|
5
|
-
<<-
|
5
|
+
<<-XML
|
6
6
|
<?xml version="1.0" encoding="utf-8"?>
|
7
7
|
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
|
8
8
|
<soap:Body>
|
@@ -22,7 +22,7 @@ RSpec.describe SoapyCake::Response do
|
|
22
22
|
</SomeResponse>
|
23
23
|
</soap:Body>
|
24
24
|
</soap:Envelope>
|
25
|
-
|
25
|
+
XML
|
26
26
|
end
|
27
27
|
|
28
28
|
subject(:response) { described_class.new(xml.strip, false, 0) }
|
@@ -32,9 +32,6 @@ RSpec.describe SoapyCake::Response do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'parses the CAKE XML structure properly' do
|
35
|
-
expect(response.to_enum.to_a).to eq([
|
36
|
-
{ id: '123' },
|
37
|
-
{ id: '312' }
|
38
|
-
])
|
35
|
+
expect(response.to_enum.to_a).to eq([{ id: '123' }, { id: '312' }])
|
39
36
|
end
|
40
37
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# rubocop:disable Style/DateTime
|
3
4
|
RSpec.describe SoapyCake::TimeConverter do
|
4
5
|
subject(:time_converter) { described_class.new('Europe/Berlin') }
|
5
6
|
|
@@ -37,3 +38,4 @@ RSpec.describe SoapyCake::TimeConverter do
|
|
37
38
|
end
|
38
39
|
end
|
39
40
|
end
|
41
|
+
# rubocop:enable Style/DateTime
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soapy_cake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- ad2games GmbH
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -25,7 +25,7 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: nokogiri
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: retryable
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - ">="
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: saxerator
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
@@ -81,7 +81,7 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: dotenv
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
@@ -95,21 +95,21 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: pry
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: '0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - ">="
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: '0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rake
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -123,21 +123,21 @@ dependencies:
|
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: rspec
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
131
|
+
version: 3.0.0
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
138
|
+
version: 3.0.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
140
|
+
name: timecop
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - ">="
|
@@ -151,7 +151,7 @@ dependencies:
|
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
154
|
+
name: vcr
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
157
|
- - ">="
|
@@ -165,7 +165,7 @@ dependencies:
|
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0'
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
168
|
+
name: webmock
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
@@ -225,6 +225,7 @@ files:
|
|
225
225
|
- spec/fixtures/vcr_cassettes/SoapyCake_Admin/returns_a_clicks_report_with_a_defined_time_range.yml
|
226
226
|
- spec/fixtures/vcr_cassettes/SoapyCake_Admin/returns_an_affiliate_with_correct_data_types.yml
|
227
227
|
- spec/fixtures/vcr_cassettes/SoapyCake_Admin/returns_media_types.yml
|
228
|
+
- spec/fixtures/vcr_cassettes/SoapyCake_AdminAddedit/_create_creatives/creates_a_creative_and_adds_a_file_to_it.yml
|
228
229
|
- spec/fixtures/vcr_cassettes/SoapyCake_AdminAddedit/advertisers/creates_advertisers.yml
|
229
230
|
- spec/fixtures/vcr_cassettes/SoapyCake_AdminAddedit/affiliates/edits_affiliates.yml
|
230
231
|
- spec/fixtures/vcr_cassettes/SoapyCake_AdminAddedit/campaigns/adds_a_campaign.yml
|
@@ -260,6 +261,7 @@ files:
|
|
260
261
|
- spec/lib/soapy_cake/affiliate_spec.rb
|
261
262
|
- spec/lib/soapy_cake/campaigns_spec.rb
|
262
263
|
- spec/lib/soapy_cake/modification_type_spec.rb
|
264
|
+
- spec/lib/soapy_cake/request_failed_spec.rb
|
263
265
|
- spec/lib/soapy_cake/request_spec.rb
|
264
266
|
- spec/lib/soapy_cake/response_spec.rb
|
265
267
|
- spec/lib/soapy_cake/response_value_spec.rb
|
@@ -286,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
286
288
|
version: '0'
|
287
289
|
requirements: []
|
288
290
|
rubyforge_project:
|
289
|
-
rubygems_version: 2.
|
291
|
+
rubygems_version: 2.6.11
|
290
292
|
signing_key:
|
291
293
|
specification_version: 4
|
292
294
|
summary: Simple client for the CAKE API
|
@@ -302,6 +304,7 @@ test_files:
|
|
302
304
|
- spec/fixtures/vcr_cassettes/SoapyCake_Admin/returns_a_clicks_report_with_a_defined_time_range.yml
|
303
305
|
- spec/fixtures/vcr_cassettes/SoapyCake_Admin/returns_an_affiliate_with_correct_data_types.yml
|
304
306
|
- spec/fixtures/vcr_cassettes/SoapyCake_Admin/returns_media_types.yml
|
307
|
+
- spec/fixtures/vcr_cassettes/SoapyCake_AdminAddedit/_create_creatives/creates_a_creative_and_adds_a_file_to_it.yml
|
305
308
|
- spec/fixtures/vcr_cassettes/SoapyCake_AdminAddedit/advertisers/creates_advertisers.yml
|
306
309
|
- spec/fixtures/vcr_cassettes/SoapyCake_AdminAddedit/affiliates/edits_affiliates.yml
|
307
310
|
- spec/fixtures/vcr_cassettes/SoapyCake_AdminAddedit/campaigns/adds_a_campaign.yml
|
@@ -337,6 +340,7 @@ test_files:
|
|
337
340
|
- spec/lib/soapy_cake/affiliate_spec.rb
|
338
341
|
- spec/lib/soapy_cake/campaigns_spec.rb
|
339
342
|
- spec/lib/soapy_cake/modification_type_spec.rb
|
343
|
+
- spec/lib/soapy_cake/request_failed_spec.rb
|
340
344
|
- spec/lib/soapy_cake/request_spec.rb
|
341
345
|
- spec/lib/soapy_cake/response_spec.rb
|
342
346
|
- spec/lib/soapy_cake/response_value_spec.rb
|