soapy_cake 1.6.8 → 1.6.9

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: 8610681c4909e15e8a89d96a5ccbde32d7af0cf4
4
- data.tar.gz: 49a1b773cb48891cc6c164d3e766f33690128362
3
+ metadata.gz: 546f6db4ccf5d567c3eebf8b789bd93d4bc4799c
4
+ data.tar.gz: 7b3794d3dd0117155a75b3da0143bb6802b35d58
5
5
  SHA512:
6
- metadata.gz: 282f66411f69a08819a117798cc965e818215ced3f3316a58e7d502605ca92f8d1e7fcf5d2011ecfe1da5547632cabca7f3bedd9d794ced17f14ac8bc21675e1
7
- data.tar.gz: 3a7a115716c61b07a7cdee8fbff98a406f2861ef66d9500dbc4bf9513c5db62f303a0e4562210deafcbdea93098c62ca4e1b76d75b8bb4dd89c8a6cdaebefb40
6
+ metadata.gz: 59d337eaf389a424d31da5e400009d636bfc7f8c9ea8361478c95be6f9cbdc1debbc7fc6cb196644a0cc33f0695b285785753550e9db7815f4221478b4b08da2
7
+ data.tar.gz: 3759564da7cb064f8a4202dffb34cf0a2ce0d5bbbe3b7d3679e679803625ab4f547ee411871e9a5832d40f8f4fb8590b92980c686b34134b3a45bb8e171702d4
@@ -1,4 +1,5 @@
1
1
  module SoapyCake
2
+ # rubocop:disable Metrics/ClassLength
2
3
  class AdminAddedit < Client
3
4
  include Helper
4
5
 
@@ -48,14 +49,28 @@ module SoapyCake
48
49
  tags_modification_type: 'do_not_change'
49
50
  }
50
51
 
52
+ REQUIRED_NEW_OFFER_PARAMS = %i(
53
+ hidden offer_status_id offer_type_id currency_id ssl click_cookie_days
54
+ impression_cookie_days redirect_404 enable_view_thru_conversions
55
+ click_trumps_impression disable_click_deduplication last_touch
56
+ enable_transaction_id_deduplication postbacks_only fire_global_pixel
57
+ fire_pixel_on_nonpaid_conversions offer_link thankyou_link from_lines
58
+ subject_lines
59
+ )
60
+
61
+ REQUIRED_OFFER_PARAMS = %i(
62
+ advertiser_id vertical_id postback_url_ms_delay offer_contract_hidden
63
+ price_format_id received received_percentage payout tags
64
+ )
65
+
66
+ REQUIRED_OFFER_CONTRACT_PARAMS = %i(
67
+ offer_id offer_contract_id offer_contract_name price_format_id payout received
68
+ received_percentage offer_link thankyou_link offer_contract_hidden
69
+ offer_contract_is_default use_fallback_targeting
70
+ )
71
+
51
72
  def add_offer(opts = {})
52
- require_params(opts, %i(
53
- hidden offer_status_id offer_type_id currency_id ssl click_cookie_days
54
- impression_cookie_days redirect_404 enable_view_thru_conversions
55
- click_trumps_impression disable_click_deduplication last_touch
56
- enable_transaction_id_deduplication postbacks_only fire_global_pixel
57
- fire_pixel_on_nonpaid_conversions offer_link thankyou_link from_lines
58
- subject_lines))
73
+ require_params(opts, REQUIRED_NEW_OFFER_PARAMS)
59
74
 
60
75
  addedit_offer(opts.merge(offer_id: 0))
61
76
  end
@@ -70,28 +85,33 @@ module SoapyCake
70
85
  require_params(opts, %i(offer_contract_id allow_countries))
71
86
 
72
87
  if opts[:allow_countries]
73
- require_params(opts, %i(countries))
74
- countries = Array(opts[:countries])
75
- opts[:countries] = countries.join(',')
76
- opts[:redirect_offer_contract_ids] = ([0] * countries.count).join(',')
88
+ geo_targets_allow_options!(opts)
77
89
  else
78
- unless opts[:redirects].is_a?(Hash) && opts[:redirects].keys.count > 0
79
- fail Error, "Parameter 'redirects' must be a COUNTRY=>REDIRECT_OFFER_CONTRACT_ID hash!"
80
- end
81
-
82
- opts[:countries] = opts[:redirects].keys.join(',')
83
- opts[:redirect_offer_contract_ids] = opts[:redirects].values.join(',')
84
- opts.delete(:redirects)
90
+ geo_targets_redirect_options!(opts)
85
91
  end
86
92
 
87
- opts.merge!(
88
- add_edit_option: 'add',
89
- set_targeting_to_geo: true
90
- )
93
+ opts.merge!(add_edit_option: 'add', set_targeting_to_geo: true)
91
94
 
92
95
  run Request.new(:admin, :addedit, :geo_targets, opts)
93
96
  end
94
97
 
98
+ def geo_targets_allow_options!(opts)
99
+ require_params(opts, %i(countries))
100
+ countries = Array(opts[:countries])
101
+ opts[:countries] = countries.join(',')
102
+ opts[:redirect_offer_contract_ids] = ([0] * countries.count).join(',')
103
+ end
104
+
105
+ def geo_targets_redirect_options!(opts)
106
+ redirects = opts.delete(:redirects)
107
+ unless redirects.is_a?(Hash) && redirects.keys.count > 0
108
+ fail Error, "Parameter 'redirects' must be a COUNTRY=>REDIRECT_OFFER_CONTRACT_ID hash!"
109
+ end
110
+
111
+ opts[:countries] = redirects.keys.join(',')
112
+ opts[:redirect_offer_contract_ids] = redirects.values.join(',')
113
+ end
114
+
95
115
  def add_offer_contract(opts = {})
96
116
  addedit_offer_contract(opts.merge(offer_contract_id: 0))
97
117
  end
@@ -106,7 +126,6 @@ module SoapyCake
106
126
  require_params(opts, %i(cap_type_id cap_interval_id cap_amount send_alert_only))
107
127
 
108
128
  translate_values!(opts, %i(cap_type_id cap_interval_id))
109
-
110
129
  opts[:cap_amount] = -1 if opts[:cap_interval_id] == const_lookup(:cap_interval_id, :disabled)
111
130
 
112
131
  run Request.new(:admin, :addedit, :caps, opts)
@@ -115,13 +134,8 @@ module SoapyCake
115
134
  def add_offer_tier(opts = {})
116
135
  require_params(opts, %i(offer_id tier_id price_format_id offer_contract_id status_id))
117
136
 
118
- opts.merge!(
119
- redirect_offer_contract_id: -1,
120
- add_edit_option: 'add'
121
- )
122
-
123
- opts[:status_id] = const_lookup(:offer_status_id, opts[:status_id]) if opts.key?(:status_id)
124
- translate_values!(opts, %i(price_format_id))
137
+ opts.merge!(redirect_offer_contract_id: -1, add_edit_option: 'add')
138
+ translate_values!(opts, %i(status_id price_format_id))
125
139
 
126
140
  run Request.new(:admin, :addedit, :offer_tiers, opts)
127
141
  end
@@ -134,61 +148,42 @@ module SoapyCake
134
148
 
135
149
  private
136
150
 
137
- def translate_values!(opts, params)
138
- params.each do |type|
139
- opts[type] = const_lookup(type, opts[type]) if opts.key?(type)
151
+ def apply_tag_opts!(opts)
152
+ return unless opts[:tags]
153
+
154
+ if opts[:tags].to_s == ''
155
+ opts[:tags_modification_type] = 'remove_all'
156
+ opts[:tags] = ''
157
+ else
158
+ opts[:tags_modification_type] = opts[:offer_id] ? 'add' : 'replace'
159
+ opts[:tags] = Array(opts[:tags]).join(',')
140
160
  end
141
161
  end
142
162
 
143
- def const_lookup(type, key)
144
- Const::CONSTS[type].fetch(key) do
145
- fail ArgumentError, "#{key} is not a valid value for #{type}"
146
- end
163
+ def default_offer_options
164
+ OFFER_DEFAULT_OPTIONS.merge(
165
+ conversion_cap_behavior: const_lookup(:conversion_behavior_id, :system),
166
+ conversion_behavior_on_redirect: const_lookup(:conversion_behavior_id, :system),
167
+ expiration_date: Date.today + (365 * 100)
168
+ )
147
169
  end
148
170
 
149
171
  def addedit_offer(opts)
150
- require_params(opts, %i(
151
- advertiser_id vertical_id postback_url_ms_delay offer_contract_hidden
152
- price_format_id received received_percentage payout tags))
153
-
154
- if opts[:tags]
155
- if opts[:tags].to_s == ''
156
- opts[:tags_modification_type] = 'remove_all'
157
- opts[:tags] = ''
158
- else
159
- opts[:tags_modification_type] = opts[:offer_id] ? 'add' : 'replace'
160
- opts[:tags] = Array(opts[:tags]).join(',')
161
- end
162
- end
172
+ require_params(opts, REQUIRED_OFFER_PARAMS)
163
173
 
164
- opts.each do |k, v|
165
- opts[k] = 'on' if v == true
166
- opts[k] = 'off' if v == false
167
- end
174
+ translate_booleans!(opts)
175
+ apply_tag_opts!(opts)
168
176
 
169
- translate_values!(opts, %i(currency_id offer_status_id offer_type_id price_format_id))
177
+ translate_values!(opts, %i(
178
+ currency_id offer_status_id offer_type_id price_format_id
179
+ conversion_cap_behavior conversion_behavior_on_redirect
180
+ ))
170
181
 
171
- %i(conversion_cap_behavior conversion_behavior_on_redirect).each do |key|
172
- next unless opts[key]
173
- opts[key] = const_lookup(:conversion_behaviour_id, opts[key])
174
- end
175
-
176
- opts.reverse_merge!(OFFER_DEFAULT_OPTIONS)
177
- opts.reverse_merge!(
178
- conversion_cap_behavior: const_lookup(:conversion_behaviour_id, :system),
179
- conversion_behavior_on_redirect: const_lookup(:conversion_behaviour_id, :system),
180
- expiration_date: Date.today + (365 * 100)
181
- )
182
-
183
- run(Request.new(:admin, :addedit, :offer, opts))[:success_info]
182
+ run(Request.new(:admin, :addedit, :offer, default_offer_options.merge(opts)))[:success_info]
184
183
  end
185
184
 
186
185
  def addedit_offer_contract(opts)
187
- require_params(opts, %i(
188
- offer_id offer_contract_id offer_contract_name price_format_id payout received
189
- received_percentage offer_link thankyou_link offer_contract_hidden
190
- offer_contract_is_default use_fallback_targeting))
191
-
186
+ require_params(opts, REQUIRED_OFFER_CONTRACT_PARAMS)
192
187
  translate_values!(opts, %i(price_format_id))
193
188
 
194
189
  run Request.new(:admin, :addedit, :offer_contract, opts)
@@ -18,16 +18,18 @@ module SoapyCake
18
18
  request.api_key = api_key
19
19
  request.time_offset = time_offset
20
20
 
21
- url = "https://#{domain}#{request.path}"
22
- body = HTTParty.post(url, headers: headers, body: request.xml, timeout: NET_TIMEOUT).body
23
-
24
- response = Response.new(body, %w(addedit track).include?(request.service))
21
+ response = Response.new(http_response(request), request.short_response?)
25
22
  response.time_offset = time_offset
26
23
  response.collection
27
24
  end
28
25
 
29
26
  private
30
27
 
28
+ def http_response(request)
29
+ url = "https://#{domain}#{request.path}"
30
+ HTTParty.post(url, headers: headers, body: request.xml, timeout: NET_TIMEOUT).body
31
+ end
32
+
31
33
  def headers
32
34
  { 'Content-Type' => 'application/soap+xml;charset=UTF-8' }
33
35
  end
@@ -37,7 +37,7 @@ module SoapyCake
37
37
  revshare: 5
38
38
  },
39
39
  # The ID mapping in the API docs is wrong, these values are taken from the UI.
40
- conversion_behaviour_id: {
40
+ conversion_behavior_id: {
41
41
  system: 0,
42
42
  adv_off: 1,
43
43
  adv_no_aff: 2,
@@ -56,5 +56,11 @@ module SoapyCake
56
56
  monthly: 3
57
57
  }
58
58
  }
59
+
60
+ CONSTS.merge!(
61
+ conversion_cap_behavior: CONSTS[:conversion_behavior_id],
62
+ conversion_behavior_on_redirect: CONSTS[:conversion_behavior_id],
63
+ status_id: CONSTS[:offer_status_id]
64
+ )
59
65
  end
60
66
  end
@@ -22,5 +22,24 @@ module SoapyCake
22
22
  fail Error, "Parameter '#{param}' missing!" unless opts.key?(param)
23
23
  end
24
24
  end
25
+
26
+ def translate_booleans!(opts)
27
+ opts.each do |k, v|
28
+ opts[k] = 'on' if v == true
29
+ opts[k] = 'off' if v == false
30
+ end
31
+ end
32
+
33
+ def translate_values!(opts, params)
34
+ params.each do |type|
35
+ opts[type] = const_lookup(type, opts[type]) if opts.key?(type)
36
+ end
37
+ end
38
+
39
+ def const_lookup(type, key)
40
+ Const::CONSTS[type].fetch(key) do
41
+ fail ArgumentError, "#{key} is not a valid value for #{type}"
42
+ end
43
+ end
25
44
  end
26
45
  end
@@ -27,6 +27,10 @@ module SoapyCake
27
27
  end.to_xml
28
28
  end
29
29
 
30
+ def short_response?
31
+ %w(addedit track).include?(service)
32
+ end
33
+
30
34
  private
31
35
 
32
36
  def api_path
@@ -24,18 +24,22 @@ module SoapyCake
24
24
 
25
25
  def typed_element(element)
26
26
  walk_tree(element) do |value, key|
27
- next value.to_i if key.to_s.end_with?('_id') && !key.to_s.end_with?('tax_id')
27
+ parse_element(key, value)
28
+ end
29
+ end
28
30
 
29
- if /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.?\d*\z/.match(value)
30
- next DateTime.parse(value + format('%+03d:00', time_offset.to_i))
31
- end
31
+ def parse_element(key, value)
32
+ return value.to_i if key.to_s.end_with?('_id') && !key.to_s.end_with?('tax_id')
33
+ return false if value == 'false'
34
+ return true if value == 'true'
35
+ return parse_date(value) if /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.?\d*\z/.match(value)
32
36
 
33
- next false if value == 'false'
34
- next true if value == 'true'
37
+ # cast to primitive string to get rid of Saxerator string class
38
+ value.to_s
39
+ end
35
40
 
36
- # cast to primitive string to get rid of Saxerator string class
37
- value.to_s
38
- end
41
+ def parse_date(value)
42
+ DateTime.parse(value + format('%+03d:00', time_offset.to_i))
39
43
  end
40
44
 
41
45
  def sax
@@ -1,3 +1,3 @@
1
1
  module SoapyCake
2
- VERSION = '1.6.8'
2
+ VERSION = '1.6.9'
3
3
  end
@@ -12,13 +12,14 @@ http_interactions:
12
12
  <env:Body>
13
13
  <cake:Offer>
14
14
  <cake:api_key>cake-api-key</cake:api_key>
15
+ <cake:offer_name>Test Offer</cake:offer_name>
16
+ <cake:third_party_name/>
15
17
  <cake:hidden>off</cake:hidden>
16
18
  <cake:offer_status_id>1</cake:offer_status_id>
17
- <cake:offer_type_id>3</cake:offer_type_id>
18
- <cake:currency_id>2</cake:currency_id>
19
19
  <cake:ssl>off</cake:ssl>
20
20
  <cake:click_cookie_days>30</cake:click_cookie_days>
21
21
  <cake:impression_cookie_days>30</cake:impression_cookie_days>
22
+ <cake:redirect_offer_contract_id>0</cake:redirect_offer_contract_id>
22
23
  <cake:redirect_404>off</cake:redirect_404>
23
24
  <cake:enable_view_thru_conversions>off</cake:enable_view_thru_conversions>
24
25
  <cake:click_trumps_impression>off</cake:click_trumps_impression>
@@ -26,40 +27,24 @@ http_interactions:
26
27
  <cake:last_touch>off</cake:last_touch>
27
28
  <cake:enable_transaction_id_deduplication>off</cake:enable_transaction_id_deduplication>
28
29
  <cake:postbacks_only>off</cake:postbacks_only>
30
+ <cake:pixel_html/>
31
+ <cake:postback_url/>
29
32
  <cake:fire_global_pixel>on</cake:fire_global_pixel>
30
33
  <cake:fire_pixel_on_nonpaid_conversions>off</cake:fire_pixel_on_nonpaid_conversions>
34
+ <cake:expiration_date_modification_type>do_not_change</cake:expiration_date_modification_type>
35
+ <cake:offer_contract_name/>
31
36
  <cake:offer_link>http://www.example.com/</cake:offer_link>
32
37
  <cake:thankyou_link>http://www.example.com/</cake:thankyou_link>
33
- <cake:from_lines>from</cake:from_lines>
34
- <cake:subject_lines>subject</cake:subject_lines>
35
- <cake:conversion_cap_behavior>5</cake:conversion_cap_behavior>
36
- <cake:conversion_behavior_on_redirect>5</cake:conversion_behavior_on_redirect>
37
- <cake:advertiser_id>15886</cake:advertiser_id>
38
- <cake:vertical_id>41</cake:vertical_id>
39
- <cake:postback_url_ms_delay>60</cake:postback_url_ms_delay>
40
- <cake:offer_contract_hidden>off</cake:offer_contract_hidden>
41
- <cake:price_format_id>1</cake:price_format_id>
42
- <cake:received>2.0</cake:received>
43
- <cake:received_percentage>off</cake:received_percentage>
44
- <cake:payout>1.5</cake:payout>
45
- <cake:tags>some,tags</cake:tags>
46
- <cake:offer_name>Test Offer</cake:offer_name>
38
+ <cake:preview_link/>
39
+ <cake:thumbnail_file_import_url/>
47
40
  <cake:offer_description>TEST1</cake:offer_description>
48
41
  <cake:restrictions>TEST2</cake:restrictions>
49
42
  <cake:advertiser_extended_terms>TEST3</cake:advertiser_extended_terms>
50
43
  <cake:testing_instructions>TEST4</cake:testing_instructions>
51
- <cake:offer_id>0</cake:offer_id>
52
- <cake:tags_modification_type>add</cake:tags_modification_type>
53
- <cake:third_party_name/>
54
- <cake:redirect_offer_contract_id>0</cake:redirect_offer_contract_id>
55
- <cake:pixel_html/>
56
- <cake:postback_url/>
57
- <cake:expiration_date_modification_type>do_not_change</cake:expiration_date_modification_type>
58
- <cake:offer_contract_name/>
59
- <cake:preview_link/>
60
- <cake:thumbnail_file_import_url/>
61
44
  <cake:allow_affiliates_to_create_creatives>no_change</cake:allow_affiliates_to_create_creatives>
62
45
  <cake:unsubscribe_link/>
46
+ <cake:from_lines>from</cake:from_lines>
47
+ <cake:subject_lines>subject</cake:subject_lines>
63
48
  <cake:conversions_from_whitelist_only>off</cake:conversions_from_whitelist_only>
64
49
  <cake:allowed_media_type_modification_type>do_not_change</cake:allowed_media_type_modification_type>
65
50
  <cake:track_search_terms_from_non_supported_search_engines>off</cake:track_search_terms_from_non_supported_search_engines>
@@ -69,7 +54,22 @@ http_interactions:
69
54
  <cake:session_regeneration_type_id>0</cake:session_regeneration_type_id>
70
55
  <cake:payout_modification_type>change</cake:payout_modification_type>
71
56
  <cake:received_modification_type>change</cake:received_modification_type>
57
+ <cake:tags_modification_type>add</cake:tags_modification_type>
58
+ <cake:conversion_cap_behavior>5</cake:conversion_cap_behavior>
59
+ <cake:conversion_behavior_on_redirect>5</cake:conversion_behavior_on_redirect>
72
60
  <cake:expiration_date>2115-01-24T01:00:00</cake:expiration_date>
61
+ <cake:offer_type_id>3</cake:offer_type_id>
62
+ <cake:currency_id>2</cake:currency_id>
63
+ <cake:advertiser_id>15886</cake:advertiser_id>
64
+ <cake:vertical_id>41</cake:vertical_id>
65
+ <cake:postback_url_ms_delay>60</cake:postback_url_ms_delay>
66
+ <cake:offer_contract_hidden>off</cake:offer_contract_hidden>
67
+ <cake:price_format_id>1</cake:price_format_id>
68
+ <cake:received>2.0</cake:received>
69
+ <cake:received_percentage>off</cake:received_percentage>
70
+ <cake:payout>1.5</cake:payout>
71
+ <cake:tags>some,tags</cake:tags>
72
+ <cake:offer_id>0</cake:offer_id>
73
73
  </cake:Offer>
74
74
  </env:Body>
75
75
  </env:Envelope>
@@ -92,7 +92,7 @@ http_interactions:
92
92
  X-Powered-By:
93
93
  - ASP.NET
94
94
  Date:
95
- - Thu, 30 Apr 2015 08:50:28 GMT
95
+ - Thu, 30 Apr 2015 13:24:51 GMT
96
96
  Content-Length:
97
97
  - '565'
98
98
  body:
@@ -100,7 +100,7 @@ http_interactions:
100
100
  string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
101
101
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><OfferResponse
102
102
  xmlns="http://cakemarketing.com/api/5/"><OfferResult><success>true</success><message>Offer
103
- 10078 Created</message><success_info><offer_id>10078</offer_id><offer_contract_id>5767</offer_contract_id><campaign_id>17628</campaign_id><creative_id>10599</creative_id></success_info></OfferResult></OfferResponse></soap:Body></soap:Envelope>
103
+ 10084 Created</message><success_info><offer_id>10084</offer_id><offer_contract_id>5789</offer_contract_id><campaign_id>17650</campaign_id><creative_id>10605</creative_id></success_info></OfferResult></OfferResponse></soap:Body></soap:Envelope>
104
104
  http_version:
105
105
  recorded_at: Tue, 17 Feb 2015 12:00:00 GMT
106
106
  recorded_with: VCR 2.9.3
@@ -12,17 +12,6 @@ http_interactions:
12
12
  <env:Body>
13
13
  <cake:Offer>
14
14
  <cake:api_key>cake-api-key</cake:api_key>
15
- <cake:offer_id>8910</cake:offer_id>
16
- <cake:advertiser_id>15886</cake:advertiser_id>
17
- <cake:vertical_id>41</cake:vertical_id>
18
- <cake:postback_url_ms_delay>50</cake:postback_url_ms_delay>
19
- <cake:offer_contract_hidden>off</cake:offer_contract_hidden>
20
- <cake:price_format_id>1</cake:price_format_id>
21
- <cake:received>2.0</cake:received>
22
- <cake:received_percentage>off</cake:received_percentage>
23
- <cake:payout>1.5</cake:payout>
24
- <cake:tags/>
25
- <cake:tags_modification_type>remove_all</cake:tags_modification_type>
26
15
  <cake:offer_name/>
27
16
  <cake:third_party_name/>
28
17
  <cake:hidden>no_change</cake:hidden>
@@ -65,9 +54,20 @@ http_interactions:
65
54
  <cake:session_regeneration_type_id>0</cake:session_regeneration_type_id>
66
55
  <cake:payout_modification_type>change</cake:payout_modification_type>
67
56
  <cake:received_modification_type>change</cake:received_modification_type>
57
+ <cake:tags_modification_type>remove_all</cake:tags_modification_type>
68
58
  <cake:conversion_cap_behavior>0</cake:conversion_cap_behavior>
69
59
  <cake:conversion_behavior_on_redirect>0</cake:conversion_behavior_on_redirect>
70
60
  <cake:expiration_date>2115-01-24T01:00:00</cake:expiration_date>
61
+ <cake:offer_id>8910</cake:offer_id>
62
+ <cake:advertiser_id>15886</cake:advertiser_id>
63
+ <cake:vertical_id>41</cake:vertical_id>
64
+ <cake:postback_url_ms_delay>50</cake:postback_url_ms_delay>
65
+ <cake:offer_contract_hidden>off</cake:offer_contract_hidden>
66
+ <cake:price_format_id>1</cake:price_format_id>
67
+ <cake:received>2.0</cake:received>
68
+ <cake:received_percentage>off</cake:received_percentage>
69
+ <cake:payout>1.5</cake:payout>
70
+ <cake:tags/>
71
71
  </cake:Offer>
72
72
  </env:Body>
73
73
  </env:Envelope>
@@ -90,7 +90,7 @@ http_interactions:
90
90
  X-Powered-By:
91
91
  - ASP.NET
92
92
  Date:
93
- - Thu, 30 Apr 2015 08:50:29 GMT
93
+ - Thu, 30 Apr 2015 13:24:51 GMT
94
94
  Content-Length:
95
95
  - '559'
96
96
  body:
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: 1.6.8
4
+ version: 1.6.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - ad2games GmbH
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-30 00:00:00.000000000 Z
11
+ date: 2015-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -173,7 +173,6 @@ extra_rdoc_files: []
173
173
  files:
174
174
  - ".gitignore"
175
175
  - ".rspec"
176
- - ".rubocop_todo.yml"
177
176
  - ".ruby-version"
178
177
  - Gemfile
179
178
  - LICENSE.txt
@@ -1,28 +0,0 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2015-04-27 16:05:40 +0200 using RuboCop version 0.30.1.
3
- # The point is for the user to remove these configuration records
4
- # one by one as the offenses are removed from the code base.
5
- # Note that changes in the inspected code, or installation of new
6
- # versions of RuboCop, may require this file to be generated again.
7
-
8
- # Offense count: 4
9
- Metrics/AbcSize:
10
- Max: 35
11
-
12
- # Offense count: 1
13
- # Configuration parameters: CountComments.
14
- Metrics/ClassLength:
15
- Max: 159
16
-
17
- # Offense count: 1
18
- Metrics/CyclomaticComplexity:
19
- Max: 7
20
-
21
- # Offense count: 2
22
- # Configuration parameters: CountComments.
23
- Metrics/MethodLength:
24
- Max: 28
25
-
26
- # Offense count: 1
27
- Metrics/PerceivedComplexity:
28
- Max: 8