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