soapy_cake 1.6.8 → 1.6.9

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