soapy_cake 1.1.2 → 1.2.0

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: c76b1ecec4c933f433efa7b7bf6d3c0f71568473
4
- data.tar.gz: 81865000bb714392d434a516aa66a93b7fb21cf8
3
+ metadata.gz: 0107652f9476d98d7948231f30c2483dcc060807
4
+ data.tar.gz: 26a0fc8182bb68f1178fd9a821786272132fe2ce
5
5
  SHA512:
6
- metadata.gz: 43a505454fcc7d43841e54030db42995de18694735b8ff6995147dad4a78eccc026d1a202afc4c6d4c0986d0fd679c6548b97f20537e8a92d63d020fb74e6a4c
7
- data.tar.gz: 442070b48ca9fbafaa55c1aee045423f5f3651b4e056347cbbdf00588e56e25fd59d1c6291751b11a5f2460da837b3fb0f071a25215f141f1f061f219cb578a0
6
+ metadata.gz: aec19e1e56835808f384f4dae6e8f14dd8a1570687d19e5d5b330dd6b7293e3b2b7f0cc59d6297101ce04c20d4cdbc05842223e13367b0f8d4c570e8411ed32b
7
+ data.tar.gz: eebba180198ac7a1074a9c5568da4cfdd357f689461c769f3a77bdadad4633a70f944540aa68e3344d5b9757b8528122af74685f0e09aa83514349fb40559fea
data/api_versions.yml CHANGED
@@ -23,6 +23,7 @@ admin:
23
23
  geo_targets: 1
24
24
  offer: 4
25
25
  offer_contract: 1
26
+ offer_tiers: 1
26
27
  suppresion_list: 1
27
28
  vertical: 1
28
29
  auth:
data/lib/soapy_cake.rb CHANGED
@@ -1,17 +1,20 @@
1
1
  require 'nokogiri'
2
2
  require 'saxerator'
3
3
  require 'httparty'
4
+ require 'active_support/core_ext/hash/reverse_merge'
4
5
  require 'active_support/core_ext/date'
5
6
  require 'active_support/core_ext/numeric/time'
6
7
  require 'active_support/core_ext/time/zones'
7
8
 
8
9
  require 'soapy_cake/version'
10
+ require 'soapy_cake/const'
9
11
  require 'soapy_cake/helper'
10
12
  require 'soapy_cake/error'
11
13
  require 'soapy_cake/request'
12
14
  require 'soapy_cake/response'
13
15
  require 'soapy_cake/client'
14
16
  require 'soapy_cake/admin'
17
+ require 'soapy_cake/admin_addedit'
15
18
  require 'soapy_cake/affiliate'
16
19
 
17
20
  module SoapyCake
@@ -76,6 +76,10 @@ module SoapyCake
76
76
  run Request.new(:admin, :get, :currencies, {})
77
77
  end
78
78
 
79
+ def tiers(*)
80
+ run Request.new(:admin, :get, :affiliate_tiers, {})
81
+ end
82
+
79
83
  def update_creative(opts = {})
80
84
  run Request.new(:admin, :addedit, :creative, opts)
81
85
  end
@@ -84,10 +88,6 @@ module SoapyCake
84
88
  run Request.new(:admin, :addedit, :campaign, opts)
85
89
  end
86
90
 
87
- def update_offer(opts = {})
88
- run Request.new(:admin, :addedit, :offer, opts)
89
- end
90
-
91
91
  def affiliate_signup(opts = {})
92
92
  run Request.new(:admin, :signup, :affiliate, opts)
93
93
  end
@@ -0,0 +1,115 @@
1
+ module SoapyCake
2
+ class AdminAddedit < Client
3
+ include Helper
4
+
5
+ def add_offer(opts = {})
6
+ require_params(opts, %i(
7
+ hidden offer_status_id offer_type_id currency_id ssl click_cookie_days
8
+ impression_cookie_days redirect_404 enable_view_thru_conversion
9
+ click_trumps_impression disable_click_deduplication last_touch
10
+ enable_transaction_id_deduplication postbacks_only fire_global_pixel
11
+ fire_pixel_on_nonpaid_conversions offer_link thankyou_link from_lines
12
+ subject_lines))
13
+
14
+ addedit_offer(opts.merge(offer_id: 0))
15
+ end
16
+
17
+ def edit_offer(opts = {})
18
+ validate_id(opts, :offer_id)
19
+
20
+ addedit_offer(opts)
21
+ end
22
+
23
+ def add_offer_contract(opts = {})
24
+ addedit_offer_contract(opts.merge(offer_contract_id: 0))
25
+ end
26
+
27
+ def edit_offer_contract(opts = {})
28
+ validate_id(opts, :offer_contract_id)
29
+
30
+ addedit_offer_contract(opts)
31
+ end
32
+
33
+ def update_caps(opts = {})
34
+ require_params(opts, %i(cap_type_id cap_interval_id cap_amount send_alert_only))
35
+
36
+ opts[:cap_amount] = -1 if opts[:cap_interval_id] == Const::CAP_INTERVAL_DISABLED
37
+
38
+ run Request.new(:admin, :addedit, :caps, opts)
39
+ end
40
+
41
+ def add_offer_tier(opts = {})
42
+ require_params(opts, %i(offer_id tier_id price_format_id offer_contract_id status_id))
43
+
44
+ opts.merge!(
45
+ redirect_offer_contract_id: -1,
46
+ add_edit_option: 'add'
47
+ )
48
+
49
+ run Request.new(:admin, :addedit, :offer_tiers, opts)
50
+ end
51
+
52
+ private
53
+
54
+ def addedit_offer(opts)
55
+ require_params(opts, %i(
56
+ advertiser_id vertical_id postback_url_ms_delay offer_contract_hidden
57
+ price_format_id received received_percentage payout tags))
58
+
59
+ opts.each do |k, v|
60
+ opts[k] = 'on' if v == true
61
+ opts[k] = 'off' if v == false
62
+ end
63
+
64
+ opts.reverse_merge!(
65
+ offer_name: '',
66
+ third_party_name: '',
67
+ hidden: 'no_change',
68
+ offer_status_id: 0,
69
+ ssl: 'no_change',
70
+ click_cookie_days: -1,
71
+ impression_cookie_days: -1,
72
+ redirect_offer_contract_id: 0,
73
+ redirect_404: 'no_change',
74
+ enable_view_thru_conversion: 'no_change',
75
+ click_trumps_impression: 'no_change',
76
+ disable_click_deduplication: 'no_change',
77
+ last_touch: 'no_change',
78
+ enable_transaction_id_deduplication: 'no_change',
79
+ postbacks_only: 'no_change',
80
+ pixel_html: '',
81
+ postback_url: '',
82
+ fire_global_pixel: 'no_change',
83
+ fire_pixel_on_nonpaid_conversions: 'no_change',
84
+ conversion_cap_behavior: Const::CONVERSION_BEHAVIOR_SYSTEM,
85
+ conversion_behavior_on_redirect: Const::CONVERSION_BEHAVIOR_SYSTEM,
86
+ expiration_date: Date.today + (365 * 100),
87
+ expiration_date_modification_type: 'do_not_change',
88
+ offer_contract_name: '',
89
+ offer_link: '',
90
+ thankyou_link: '',
91
+ preview_link: '',
92
+ thumbnail_file_import_url: '',
93
+ offer_description: '',
94
+ restrictions: '',
95
+ advertiser_extended_terms: '',
96
+ testing_instructions: '',
97
+ allow_affiliates_to_create_creatives: 'no_change',
98
+ unsubscribe_link: '',
99
+ from_lines: '',
100
+ subject_lines: ''
101
+ )
102
+
103
+ run(Request.new(:admin, :addedit, :offer, opts))[:success_info]
104
+ end
105
+
106
+ def addedit_offer_contract(opts)
107
+ require_params(opts, %i(
108
+ offer_id offer_contract_id offer_contract_name price_format_id payout received
109
+ received_percentage offer_link thankyou_link offer_contract_hidden
110
+ offer_contract_is_default use_fallback_targeting))
111
+
112
+ run Request.new(:admin, :addedit, :offer_contract, opts)
113
+ end
114
+ end
115
+ end
@@ -21,7 +21,7 @@ module SoapyCake
21
21
  url = "https://#{domain}#{request.path}"
22
22
  body = HTTParty.post(url, headers: headers, body: request.xml).body
23
23
 
24
- response = Response.new(body)
24
+ response = Response.new(body, request.addedit?)
25
25
  response.time_offset = time_offset
26
26
  response.collection
27
27
  end
@@ -0,0 +1,39 @@
1
+ module SoapyCake
2
+ module Const
3
+ OFFER_STATUS_PUBLIC = 1
4
+ OFFER_STATUS_PRIVATE = 2
5
+ OFFER_STATUS_APPLY_TO_RUN = 3
6
+ OFFER_STATUS_INACTIVE = 4
7
+
8
+ OFFER_TYPE_HOSTED = 1
9
+ OFFER_TYPE_HOST_N_POST = 2
10
+ OFFER_TYPE_3RD_PARTY = 3
11
+
12
+ CURRENCY_USD = 1
13
+ CURRENCY_EUR = 2
14
+ CURRENCY_GBD = 3
15
+ CURRENCY_AUD = 4
16
+ CURRENCY_CAD = 5
17
+
18
+ PRICE_FORMAT_CPA = 1
19
+ PRICE_FORMAT_CPC = 2
20
+ PRICE_FORMAT_CPM = 3
21
+ PRICE_FORMAT_FIXED = 4
22
+ PRICE_FORMAT_REVSHARE = 5
23
+
24
+ CONVERSION_BEHAVIOR_SYSTEM = 0
25
+ CONVERSION_BEHAVIOR_ADV_AFF = 1
26
+ CONVERSION_BEHAVIOR_ADV_NO_AFF = 2
27
+ CONVERSION_BEHAVIOR_IGNORE = 3
28
+ CONVERSION_BEHAVIOR_NO_ADV_AFF = 4
29
+ CONVERSION_BEHAVIOR_NO_ADV_NO_AFF = 5
30
+
31
+ CAP_TYPE_CLICK = 1
32
+ CAP_TYPE_CONVERSION = 2
33
+
34
+ CAP_INTERVAL_DISABLED = 0
35
+ CAP_INTERVAL_DAILY = 1
36
+ CAP_INTERVAL_WEEKLY = 2
37
+ CAP_INTERVAL_MONTHLY = 3
38
+ end
39
+ end
@@ -1,6 +1,6 @@
1
1
  module SoapyCake
2
2
  module Helper
3
- def self.walk_tree(obj, key = nil, &block)
3
+ def walk_tree(obj, key = nil, &block)
4
4
  return nil if obj == {}
5
5
 
6
6
  case obj
@@ -12,5 +12,15 @@ module SoapyCake
12
12
  yield(obj, key)
13
13
  end
14
14
  end
15
+
16
+ def validate_id(opts, key)
17
+ fail Error, "Parameter '#{key}' must be > 0!" if opts[key].to_i < 1
18
+ end
19
+
20
+ def require_params(opts, params)
21
+ params.each do |param|
22
+ fail Error, "Parameter '#{param}' missing!" unless opts.key?(param)
23
+ end
24
+ end
15
25
  end
16
26
  end
@@ -27,6 +27,10 @@ module SoapyCake
27
27
  end.to_xml
28
28
  end
29
29
 
30
+ def addedit?
31
+ service == 'addedit'
32
+ end
33
+
30
34
  private
31
35
 
32
36
  def api_path
@@ -1,15 +1,20 @@
1
1
  module SoapyCake
2
2
  class Response
3
+ include Helper
4
+
3
5
  attr_accessor :time_offset
4
- attr_reader :body
6
+ attr_reader :body, :addedit
5
7
 
6
- def initialize(body)
8
+ def initialize(body, addedit)
7
9
  @body = body
10
+ @addedit = addedit
8
11
  end
9
12
 
10
13
  def collection
11
14
  check_errors!
12
15
 
16
+ return typed_element(sax.at_depth(3).first) if addedit
17
+
13
18
  sax.at_depth(5).map do |element|
14
19
  typed_element(element)
15
20
  end
@@ -18,7 +23,7 @@ module SoapyCake
18
23
  private
19
24
 
20
25
  def typed_element(element)
21
- Helper.walk_tree(element) do |value, key|
26
+ walk_tree(element) do |value, key|
22
27
  next value.to_i if key.to_s.end_with?('_id') && !key.to_s.end_with?('tax_id')
23
28
 
24
29
  if /\A\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.?\d*\z/.match(value)
@@ -42,10 +47,11 @@ module SoapyCake
42
47
  def check_errors!
43
48
  fault = sax.for_tag(:fault).first
44
49
  fail RequestFailed, fault[:reason][:text] if fault
45
- unless sax.for_tag(:success).first == 'true'
46
- message = sax.for_tag(:message).first || sax.for_tag(:Text).first || 'Unknown error'
47
- fail RequestFailed, message
48
- end
50
+ fail RequestFailed, error_message unless sax.for_tag(:success).first == 'true'
51
+ end
52
+
53
+ def error_message
54
+ sax.for_tag(:message).first || sax.for_tag(:Text).first || 'Unknown error'
49
55
  end
50
56
  end
51
57
  end
@@ -1,3 +1,3 @@
1
1
  module SoapyCake
2
- VERSION = '1.1.2'
2
+ VERSION = '1.2.0'
3
3
  end
data/soapy_cake.gemspec CHANGED
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency 'vcr'
30
30
  spec.add_development_dependency 'webmock'
31
31
  spec.add_development_dependency 'pry'
32
+ spec.add_development_dependency 'timecop'
32
33
  end
@@ -0,0 +1,53 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://cake-partner-domain.com/api/1/addedit.asmx
6
+ body:
7
+ encoding: UTF-8
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:Caps>
14
+ <cake:api_key>cake-api-key</cake:api_key>
15
+ <cake:offer_contract_id>1456</cake:offer_contract_id>
16
+ <cake:cap_type_id>2</cake:cap_type_id>
17
+ <cake:cap_interval_id>0</cake:cap_interval_id>
18
+ <cake:cap_amount>-1</cake:cap_amount>
19
+ <cake:send_alert_only>false</cake:send_alert_only>
20
+ </cake:Caps>
21
+ </env:Body>
22
+ </env:Envelope>
23
+ headers:
24
+ Content-Type:
25
+ - application/soap+xml;charset=UTF-8
26
+ response:
27
+ status:
28
+ code: 200
29
+ message: OK
30
+ headers:
31
+ Cache-Control:
32
+ - private, max-age=0
33
+ Content-Type:
34
+ - application/soap+xml; charset=utf-8
35
+ Server:
36
+ - Microsoft-IIS/8.0
37
+ X-Aspnet-Version:
38
+ - 4.0.30319
39
+ X-Powered-By:
40
+ - ASP.NET
41
+ Date:
42
+ - Tue, 17 Feb 2015 14:00:08 GMT
43
+ Content-Length:
44
+ - '391'
45
+ body:
46
+ encoding: UTF-8
47
+ string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
48
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><CapsResponse
49
+ xmlns="http://cakemarketing.com/api/1/"><CapsResult><success>true</success><message>Cap
50
+ Updated</message></CapsResult></CapsResponse></soap:Body></soap:Envelope>
51
+ http_version:
52
+ recorded_at: Tue, 17 Feb 2015 14:00:11 GMT
53
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,53 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://cake-partner-domain.com/api/1/addedit.asmx
6
+ body:
7
+ encoding: UTF-8
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:Caps>
14
+ <cake:api_key>cake-api-key</cake:api_key>
15
+ <cake:offer_contract_id>1456</cake:offer_contract_id>
16
+ <cake:cap_type_id>2</cake:cap_type_id>
17
+ <cake:cap_interval_id>1</cake:cap_interval_id>
18
+ <cake:cap_amount>42</cake:cap_amount>
19
+ <cake:send_alert_only>false</cake:send_alert_only>
20
+ </cake:Caps>
21
+ </env:Body>
22
+ </env:Envelope>
23
+ headers:
24
+ Content-Type:
25
+ - application/soap+xml;charset=UTF-8
26
+ response:
27
+ status:
28
+ code: 200
29
+ message: OK
30
+ headers:
31
+ Cache-Control:
32
+ - private, max-age=0
33
+ Content-Type:
34
+ - application/soap+xml; charset=utf-8
35
+ Server:
36
+ - Microsoft-IIS/8.0
37
+ X-Aspnet-Version:
38
+ - 4.0.30319
39
+ X-Powered-By:
40
+ - ASP.NET
41
+ Date:
42
+ - Tue, 17 Feb 2015 13:56:30 GMT
43
+ Content-Length:
44
+ - '391'
45
+ body:
46
+ encoding: UTF-8
47
+ string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
48
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><CapsResponse
49
+ xmlns="http://cakemarketing.com/api/1/"><CapsResult><success>true</success><message>Cap
50
+ Updated</message></CapsResult></CapsResponse></soap:Body></soap:Envelope>
51
+ http_version:
52
+ recorded_at: Tue, 17 Feb 2015 13:56:33 GMT
53
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,60 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://cake-partner-domain.com/api/1/addedit.asmx
6
+ body:
7
+ encoding: UTF-8
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:OfferContract>
14
+ <cake:api_key>cake-api-key</cake:api_key>
15
+ <cake:offer_id>8910</cake:offer_id>
16
+ <cake:offer_contract_name>Test Contract</cake:offer_contract_name>
17
+ <cake:price_format_id>1</cake:price_format_id>
18
+ <cake:received>3.2</cake:received>
19
+ <cake:received_percentage>false</cake:received_percentage>
20
+ <cake:payout>2.5</cake:payout>
21
+ <cake:offer_link>http://oc.example.com</cake:offer_link>
22
+ <cake:thankyou_link>http://oc.example.com/thanks</cake:thankyou_link>
23
+ <cake:offer_contract_hidden>true</cake:offer_contract_hidden>
24
+ <cake:offer_contract_is_default>false</cake:offer_contract_is_default>
25
+ <cake:use_fallback_targeting>true</cake:use_fallback_targeting>
26
+ <cake:offer_contract_id>0</cake:offer_contract_id>
27
+ </cake:OfferContract>
28
+ </env:Body>
29
+ </env:Envelope>
30
+ headers:
31
+ Content-Type:
32
+ - application/soap+xml;charset=UTF-8
33
+ response:
34
+ status:
35
+ code: 200
36
+ message: OK
37
+ headers:
38
+ Cache-Control:
39
+ - private, max-age=0
40
+ Content-Type:
41
+ - application/soap+xml; charset=utf-8
42
+ Server:
43
+ - Microsoft-IIS/8.0
44
+ X-Aspnet-Version:
45
+ - 4.0.30319
46
+ X-Powered-By:
47
+ - ASP.NET
48
+ Date:
49
+ - Tue, 17 Feb 2015 13:19:10 GMT
50
+ Content-Length:
51
+ - '486'
52
+ body:
53
+ encoding: UTF-8
54
+ string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
55
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><OfferContractResponse
56
+ xmlns="http://cakemarketing.com/api/1/"><OfferContractResult><success>true</success><message>Offer
57
+ Contract 1456 Created</message><offer_contract_id>1456</offer_contract_id></OfferContractResult></OfferContractResponse></soap:Body></soap:Envelope>
58
+ http_version:
59
+ recorded_at: Tue, 17 Feb 2015 13:19:12 GMT
60
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,60 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://cake-partner-domain.com/api/1/addedit.asmx
6
+ body:
7
+ encoding: UTF-8
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:OfferContract>
14
+ <cake:api_key>cake-api-key</cake:api_key>
15
+ <cake:offer_id>8910</cake:offer_id>
16
+ <cake:offer_contract_id>1456</cake:offer_contract_id>
17
+ <cake:offer_contract_name>Test Contract</cake:offer_contract_name>
18
+ <cake:price_format_id>1</cake:price_format_id>
19
+ <cake:received>3.2</cake:received>
20
+ <cake:received_percentage>false</cake:received_percentage>
21
+ <cake:payout>2.5</cake:payout>
22
+ <cake:offer_link>http://oc.example.com</cake:offer_link>
23
+ <cake:thankyou_link>http://oc.example.com/thanks</cake:thankyou_link>
24
+ <cake:offer_contract_hidden>true</cake:offer_contract_hidden>
25
+ <cake:offer_contract_is_default>false</cake:offer_contract_is_default>
26
+ <cake:use_fallback_targeting>true</cake:use_fallback_targeting>
27
+ </cake:OfferContract>
28
+ </env:Body>
29
+ </env:Envelope>
30
+ headers:
31
+ Content-Type:
32
+ - application/soap+xml;charset=UTF-8
33
+ response:
34
+ status:
35
+ code: 200
36
+ message: OK
37
+ headers:
38
+ Cache-Control:
39
+ - private, max-age=0
40
+ Content-Type:
41
+ - application/soap+xml; charset=utf-8
42
+ Server:
43
+ - Microsoft-IIS/8.0
44
+ X-Aspnet-Version:
45
+ - 4.0.30319
46
+ X-Powered-By:
47
+ - ASP.NET
48
+ Date:
49
+ - Tue, 17 Feb 2015 13:36:30 GMT
50
+ Content-Length:
51
+ - '486'
52
+ body:
53
+ encoding: UTF-8
54
+ string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
55
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><OfferContractResponse
56
+ xmlns="http://cakemarketing.com/api/1/"><OfferContractResult><success>true</success><message>Offer
57
+ Contract 1456 Updated</message><offer_contract_id>1456</offer_contract_id></OfferContractResult></OfferContractResponse></soap:Body></soap:Envelope>
58
+ http_version:
59
+ recorded_at: Tue, 17 Feb 2015 13:36:32 GMT
60
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,55 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://cake-partner-domain.com/api/1/addedit.asmx
6
+ body:
7
+ encoding: UTF-8
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:OfferTiers>
14
+ <cake:api_key>cake-api-key</cake:api_key>
15
+ <cake:offer_id>8910</cake:offer_id>
16
+ <cake:offer_contract_id>1456</cake:offer_contract_id>
17
+ <cake:tier_id>4</cake:tier_id>
18
+ <cake:price_format_id>1</cake:price_format_id>
19
+ <cake:status_id>1</cake:status_id>
20
+ <cake:redirect_offer_contract_id>-1</cake:redirect_offer_contract_id>
21
+ <cake:add_edit_option>add</cake:add_edit_option>
22
+ </cake:OfferTiers>
23
+ </env:Body>
24
+ </env:Envelope>
25
+ headers:
26
+ Content-Type:
27
+ - application/soap+xml;charset=UTF-8
28
+ response:
29
+ status:
30
+ code: 200
31
+ message: OK
32
+ headers:
33
+ Cache-Control:
34
+ - private, max-age=0
35
+ Content-Type:
36
+ - application/soap+xml; charset=utf-8
37
+ Server:
38
+ - Microsoft-IIS/8.0
39
+ X-Aspnet-Version:
40
+ - 4.0.30319
41
+ X-Powered-By:
42
+ - ASP.NET
43
+ Date:
44
+ - Tue, 17 Feb 2015 14:33:01 GMT
45
+ Content-Length:
46
+ - '444'
47
+ body:
48
+ encoding: UTF-8
49
+ string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
50
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><OfferTiersResponse
51
+ xmlns="http://cakemarketing.com/api/1/"><OfferTiersResult><success>true</success><message>Offer
52
+ Tier Added</message><row_count>0</row_count></OfferTiersResult></OfferTiersResponse></soap:Body></soap:Envelope>
53
+ http_version:
54
+ recorded_at: Tue, 17 Feb 2015 14:33:04 GMT
55
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,96 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://cake-partner-domain.com/api/4/addedit.asmx
6
+ body:
7
+ encoding: UTF-8
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/4/">
11
+ <env:Header/>
12
+ <env:Body>
13
+ <cake:Offer>
14
+ <cake:api_key>cake-api-key</cake:api_key>
15
+ <cake:hidden>off</cake:hidden>
16
+ <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
+ <cake:ssl>off</cake:ssl>
20
+ <cake:click_cookie_days>30</cake:click_cookie_days>
21
+ <cake:impression_cookie_days>30</cake:impression_cookie_days>
22
+ <cake:redirect_404>off</cake:redirect_404>
23
+ <cake:enable_view_thru_conversion>off</cake:enable_view_thru_conversion>
24
+ <cake:click_trumps_impression>off</cake:click_trumps_impression>
25
+ <cake:disable_click_deduplication>off</cake:disable_click_deduplication>
26
+ <cake:last_touch>off</cake:last_touch>
27
+ <cake:enable_transaction_id_deduplication>off</cake:enable_transaction_id_deduplication>
28
+ <cake:postbacks_only>off</cake:postbacks_only>
29
+ <cake:fire_global_pixel>on</cake:fire_global_pixel>
30
+ <cake:fire_pixel_on_nonpaid_conversions>off</cake:fire_pixel_on_nonpaid_conversions>
31
+ <cake:offer_link>http://www.example.com/</cake:offer_link>
32
+ <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:advertiser_id>15886</cake:advertiser_id>
36
+ <cake:vertical_id>41</cake:vertical_id>
37
+ <cake:postback_url_ms_delay>60</cake:postback_url_ms_delay>
38
+ <cake:offer_contract_hidden>off</cake:offer_contract_hidden>
39
+ <cake:price_format_id>1</cake:price_format_id>
40
+ <cake:received>2.0</cake:received>
41
+ <cake:received_percentage>off</cake:received_percentage>
42
+ <cake:payout>1.5</cake:payout>
43
+ <cake:tags/>
44
+ <cake:offer_name>Test Offer</cake:offer_name>
45
+ <cake:offer_description>TEST1</cake:offer_description>
46
+ <cake:restrictions>TEST2</cake:restrictions>
47
+ <cake:advertiser_extended_terms>TEST3</cake:advertiser_extended_terms>
48
+ <cake:testing_instructions>TEST4</cake:testing_instructions>
49
+ <cake:offer_id>0</cake:offer_id>
50
+ <cake:third_party_name/>
51
+ <cake:redirect_offer_contract_id>0</cake:redirect_offer_contract_id>
52
+ <cake:pixel_html/>
53
+ <cake:postback_url/>
54
+ <cake:conversion_cap_behavior>0</cake:conversion_cap_behavior>
55
+ <cake:conversion_behavior_on_redirect>0</cake:conversion_behavior_on_redirect>
56
+ <cake:expiration_date>2115-01-24T01:00:00</cake:expiration_date>
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
+ <cake:allow_affiliates_to_create_creatives>no_change</cake:allow_affiliates_to_create_creatives>
62
+ <cake:unsubscribe_link/>
63
+ </cake:Offer>
64
+ </env:Body>
65
+ </env:Envelope>
66
+ headers:
67
+ Content-Type:
68
+ - application/soap+xml;charset=UTF-8
69
+ response:
70
+ status:
71
+ code: 200
72
+ message: OK
73
+ headers:
74
+ Cache-Control:
75
+ - private, max-age=0
76
+ Content-Type:
77
+ - application/soap+xml; charset=utf-8
78
+ Server:
79
+ - Microsoft-IIS/8.0
80
+ X-Aspnet-Version:
81
+ - 4.0.30319
82
+ X-Powered-By:
83
+ - ASP.NET
84
+ Date:
85
+ - Tue, 17 Feb 2015 13:18:40 GMT
86
+ Content-Length:
87
+ - '562'
88
+ body:
89
+ encoding: UTF-8
90
+ string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
91
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><OfferResponse
92
+ xmlns="http://cakemarketing.com/api/4/"><OfferResult><success>true</success><message>Offer
93
+ 8910 Created</message><success_info><offer_id>8910</offer_id><offer_contract_id>1455</offer_contract_id><campaign_id>13301</campaign_id><creative_id>9431</creative_id></success_info></OfferResult></OfferResponse></soap:Body></soap:Envelope>
94
+ http_version:
95
+ recorded_at: Tue, 17 Feb 2015 13:18:43 GMT
96
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,95 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://cake-partner-domain.com/api/4/addedit.asmx
6
+ body:
7
+ encoding: UTF-8
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/4/">
11
+ <env:Header/>
12
+ <env:Body>
13
+ <cake:Offer>
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:offer_name/>
26
+ <cake:third_party_name/>
27
+ <cake:hidden>no_change</cake:hidden>
28
+ <cake:offer_status_id>0</cake:offer_status_id>
29
+ <cake:ssl>no_change</cake:ssl>
30
+ <cake:click_cookie_days>-1</cake:click_cookie_days>
31
+ <cake:impression_cookie_days>-1</cake:impression_cookie_days>
32
+ <cake:redirect_offer_contract_id>0</cake:redirect_offer_contract_id>
33
+ <cake:redirect_404>no_change</cake:redirect_404>
34
+ <cake:enable_view_thru_conversion>no_change</cake:enable_view_thru_conversion>
35
+ <cake:click_trumps_impression>no_change</cake:click_trumps_impression>
36
+ <cake:disable_click_deduplication>no_change</cake:disable_click_deduplication>
37
+ <cake:last_touch>no_change</cake:last_touch>
38
+ <cake:enable_transaction_id_deduplication>no_change</cake:enable_transaction_id_deduplication>
39
+ <cake:postbacks_only>no_change</cake:postbacks_only>
40
+ <cake:pixel_html/>
41
+ <cake:postback_url/>
42
+ <cake:fire_global_pixel>no_change</cake:fire_global_pixel>
43
+ <cake:fire_pixel_on_nonpaid_conversions>no_change</cake:fire_pixel_on_nonpaid_conversions>
44
+ <cake:conversion_cap_behavior>0</cake:conversion_cap_behavior>
45
+ <cake:conversion_behavior_on_redirect>0</cake:conversion_behavior_on_redirect>
46
+ <cake:expiration_date>2115-01-24T01:00:00</cake:expiration_date>
47
+ <cake:expiration_date_modification_type>do_not_change</cake:expiration_date_modification_type>
48
+ <cake:offer_contract_name/>
49
+ <cake:offer_link/>
50
+ <cake:thankyou_link/>
51
+ <cake:preview_link/>
52
+ <cake:thumbnail_file_import_url/>
53
+ <cake:offer_description/>
54
+ <cake:restrictions/>
55
+ <cake:advertiser_extended_terms/>
56
+ <cake:testing_instructions/>
57
+ <cake:allow_affiliates_to_create_creatives>no_change</cake:allow_affiliates_to_create_creatives>
58
+ <cake:unsubscribe_link/>
59
+ <cake:from_lines/>
60
+ <cake:subject_lines/>
61
+ </cake:Offer>
62
+ </env:Body>
63
+ </env:Envelope>
64
+ headers:
65
+ Content-Type:
66
+ - application/soap+xml;charset=UTF-8
67
+ response:
68
+ status:
69
+ code: 200
70
+ message: OK
71
+ headers:
72
+ Cache-Control:
73
+ - private, max-age=0
74
+ Content-Type:
75
+ - application/soap+xml; charset=utf-8
76
+ Server:
77
+ - Microsoft-IIS/8.0
78
+ X-Aspnet-Version:
79
+ - 4.0.30319
80
+ X-Powered-By:
81
+ - ASP.NET
82
+ Date:
83
+ - Tue, 17 Feb 2015 13:19:09 GMT
84
+ Content-Length:
85
+ - '559'
86
+ body:
87
+ encoding: UTF-8
88
+ string: <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
89
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><OfferResponse
90
+ xmlns="http://cakemarketing.com/api/4/"><OfferResult><success>true</success><message>Offer
91
+ 8910 Updated</message><success_info><offer_id>8910</offer_id><offer_contract_id>1455</offer_contract_id><campaign_id
92
+ xsi:nil="true" /><creative_id xsi:nil="true" /></success_info></OfferResult></OfferResponse></soap:Body></soap:Envelope>
93
+ http_version:
94
+ recorded_at: Tue, 17 Feb 2015 13:19:11 GMT
95
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,185 @@
1
+ RSpec.describe 'ADDEDIT integration test' do
2
+ subject { SoapyCake::AdminAddedit.new }
3
+
4
+ around { |example| Timecop.freeze(Time.utc(2015, 2, 17, 12), &example) }
5
+
6
+ let(:advertiser_id) { 15886 }
7
+ let(:vertical_id) { 41 }
8
+ let(:offer_id) { 8910 }
9
+ let(:offer_contract_id) { 1456 }
10
+ let(:tier_id) { 4 }
11
+
12
+ describe 'offers' do
13
+ it 'creates an offer', :vcr do
14
+ result = subject.add_offer(
15
+ hidden: false,
16
+ offer_status_id: SoapyCake::Const::OFFER_STATUS_PUBLIC,
17
+ offer_type_id: SoapyCake::Const::OFFER_TYPE_3RD_PARTY,
18
+ currency_id: SoapyCake::Const::CURRENCY_EUR,
19
+ ssl: false,
20
+ click_cookie_days: 30,
21
+ impression_cookie_days: 30,
22
+ redirect_404: 'off',
23
+ enable_view_thru_conversion: 'off',
24
+ click_trumps_impression: 'off',
25
+ disable_click_deduplication: 'off',
26
+ last_touch: 'off',
27
+ enable_transaction_id_deduplication: 'off',
28
+ postbacks_only: 'off',
29
+ fire_global_pixel: 'on',
30
+ fire_pixel_on_nonpaid_conversions: 'off',
31
+ offer_link: 'http://www.example.com/',
32
+ thankyou_link: 'http://www.example.com/',
33
+ from_lines: 'from',
34
+ subject_lines: 'subject',
35
+
36
+ advertiser_id: advertiser_id,
37
+ vertical_id: vertical_id,
38
+ postback_url_ms_delay: 60,
39
+ offer_contract_hidden: false,
40
+ price_format_id: SoapyCake::Const::PRICE_FORMAT_CPA,
41
+ received: 2.0,
42
+ received_percentage: false,
43
+ payout: 1.5,
44
+
45
+ tags: '',
46
+ offer_name: 'Test Offer',
47
+ offer_description: 'TEST1',
48
+ restrictions: 'TEST2',
49
+ advertiser_extended_terms: 'TEST3',
50
+ testing_instructions: 'TEST4'
51
+ )
52
+
53
+ expect(result).to include(
54
+ creative_id: 9431,
55
+ offer_contract_id: 1455,
56
+ offer_id: 8910
57
+ )
58
+ end
59
+
60
+ it 'updates an offer', :vcr do
61
+ result = subject.edit_offer(
62
+ offer_id: offer_id,
63
+
64
+ advertiser_id: advertiser_id,
65
+ vertical_id: vertical_id,
66
+ postback_url_ms_delay: 50,
67
+ offer_contract_hidden: false,
68
+ price_format_id: SoapyCake::Const::PRICE_FORMAT_CPA,
69
+ received: 2.0,
70
+ received_percentage: false,
71
+ payout: 1.5,
72
+ tags: ''
73
+ )
74
+
75
+ expect(result).to include(offer_id: offer_id)
76
+ end
77
+
78
+ context 'errors' do
79
+ it 'fails when not enough params are given' do
80
+ expect do
81
+ subject.edit_offer(offer_id: 123)
82
+ end.to raise_error(SoapyCake::Error, "Parameter 'advertiser_id' missing!")
83
+ end
84
+
85
+ it 'fails when invalid offer_id is given on edit' do
86
+ expect do
87
+ subject.edit_offer(offer_id: -1)
88
+ end.to raise_error(SoapyCake::Error, "Parameter 'offer_id' must be > 0!")
89
+ end
90
+ end
91
+ end
92
+
93
+ describe 'offer contracts' do
94
+ it 'creates an offer contract', :vcr do
95
+ result = subject.add_offer_contract(
96
+ offer_id: offer_id,
97
+ offer_contract_name: 'Test Contract',
98
+ price_format_id: SoapyCake::Const::PRICE_FORMAT_CPA,
99
+ received: 3.2,
100
+ received_percentage: false,
101
+ payout: 2.5,
102
+ offer_link: 'http://oc.example.com',
103
+ thankyou_link: 'http://oc.example.com/thanks',
104
+ offer_contract_hidden: true,
105
+ offer_contract_is_default: false,
106
+ use_fallback_targeting: true
107
+ )
108
+
109
+ expect(result).to include(offer_contract_id: 1456)
110
+ end
111
+
112
+ it 'updates an offer contract', :vcr do
113
+ result = subject.edit_offer_contract(
114
+ offer_id: offer_id,
115
+ offer_contract_id: offer_contract_id,
116
+ offer_contract_name: 'Test Contract',
117
+ price_format_id: SoapyCake::Const::PRICE_FORMAT_CPA,
118
+ received: 3.2,
119
+ received_percentage: false,
120
+ payout: 2.5,
121
+ offer_link: 'http://oc.example.com',
122
+ thankyou_link: 'http://oc.example.com/thanks',
123
+ offer_contract_hidden: true,
124
+ offer_contract_is_default: false,
125
+ use_fallback_targeting: true
126
+ )
127
+
128
+ expect(result).to include(offer_contract_id: 1456)
129
+ end
130
+
131
+ context 'errors' do
132
+ it 'fails when not enough params are given' do
133
+ expect do
134
+ subject.edit_offer_contract(offer_contract_id: 123)
135
+ end.to raise_error(SoapyCake::Error, "Parameter 'offer_id' missing!")
136
+ end
137
+
138
+ it 'fails when invalid offer_id is given on edit' do
139
+ expect do
140
+ subject.edit_offer_contract(offer_contract_id: -1)
141
+ end.to raise_error(SoapyCake::Error, "Parameter 'offer_contract_id' must be > 0!")
142
+ end
143
+ end
144
+ end
145
+
146
+ describe 'offer / offer contract caps' do
147
+ it 'updates a cap for an offer contract', :vcr do
148
+ result = subject.update_caps(
149
+ offer_contract_id: offer_contract_id,
150
+ cap_type_id: SoapyCake::Const::CAP_TYPE_CONVERSION,
151
+ cap_interval_id: SoapyCake::Const::CAP_INTERVAL_DAILY,
152
+ cap_amount: 42,
153
+ send_alert_only: false
154
+ )
155
+
156
+ expect(result[:message]).to eq('Cap Updated')
157
+ end
158
+
159
+ it 'removes a cap for an offer contract', :vcr do
160
+ result = subject.update_caps(
161
+ offer_contract_id: offer_contract_id,
162
+ cap_type_id: SoapyCake::Const::CAP_TYPE_CONVERSION,
163
+ cap_interval_id: SoapyCake::Const::CAP_INTERVAL_DISABLED,
164
+ cap_amount: 42,
165
+ send_alert_only: false
166
+ )
167
+
168
+ expect(result[:message]).to eq('Cap Updated')
169
+ end
170
+ end
171
+
172
+ describe 'offer tiers' do
173
+ it 'adds an offer tier', :vcr do
174
+ result = subject.add_offer_tier(
175
+ offer_id: offer_id,
176
+ offer_contract_id: offer_contract_id,
177
+ tier_id: tier_id,
178
+ price_format_id: SoapyCake::Const::PRICE_FORMAT_CPA,
179
+ status_id: SoapyCake::Const::OFFER_STATUS_PUBLIC
180
+ )
181
+
182
+ expect(result[:message]).to eq('Offer Tier Added')
183
+ end
184
+ end
185
+ end
@@ -130,6 +130,13 @@ RSpec.describe SoapyCake::Admin do
130
130
  let(:cake_opts) { {} }
131
131
  it_behaves_like 'a cake admin method'
132
132
  end
133
+
134
+ describe '#tiers' do
135
+ let(:method) { :tiers }
136
+ let(:cake_method) { :affiliate_tiers }
137
+ let(:cake_opts) { {} }
138
+ it_behaves_like 'a cake admin method'
139
+ end
133
140
  end
134
141
 
135
142
  describe 'addedit service' do
@@ -146,12 +153,6 @@ RSpec.describe SoapyCake::Admin do
146
153
  let(:cake_method) { :campaign }
147
154
  it_behaves_like 'a cake admin method'
148
155
  end
149
-
150
- describe '#update_creative' do
151
- let(:method) { :update_offer }
152
- let(:cake_method) { :offer }
153
- it_behaves_like 'a cake admin method'
154
- end
155
156
  end
156
157
 
157
158
  describe 'signup service' do
@@ -13,11 +13,11 @@ RSpec.describe 'Integration test' do
13
13
  # dates
14
14
  date_created: DateTime.new(2014, 4, 28, 10, 52, 15.537),
15
15
  # floats
16
- minimum_payment_threshold: '0.0000',
16
+ minimum_payment_threshold: '0.0000'
17
17
  )
18
18
 
19
19
  # arrays
20
- expect(result.first[:contacts][:contact_info].map { |contact| contact[:contact_id]}).to \
20
+ expect(result.first[:contacts][:contact_info].map { |contact| contact[:contact_id] }).to \
21
21
  eq([8819, 8820])
22
22
  end
23
23
 
@@ -0,0 +1,7 @@
1
+ RSpec.describe SoapyCake::Request do
2
+ it 'raises if there is no api version stored' do
3
+ expect do
4
+ described_class.new(:test, :does, :not_exist).xml
5
+ end.to raise_error(SoapyCake::Error, 'Unknown API call test::does::not_exist')
6
+ end
7
+ end
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.1.2
4
+ version: 1.2.0
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-02-13 00:00:00.000000000 Z
11
+ date: 2015-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -150,6 +150,20 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: timecop
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
153
167
  description: Simple client for the CAKE API (http://getcake.com)
154
168
  email:
155
169
  - developers@ad2games.com
@@ -167,20 +181,31 @@ files:
167
181
  - api_versions.yml
168
182
  - lib/soapy_cake.rb
169
183
  - lib/soapy_cake/admin.rb
184
+ - lib/soapy_cake/admin_addedit.rb
170
185
  - lib/soapy_cake/affiliate.rb
171
186
  - lib/soapy_cake/client.rb
187
+ - lib/soapy_cake/const.rb
172
188
  - lib/soapy_cake/error.rb
173
189
  - lib/soapy_cake/helper.rb
174
190
  - lib/soapy_cake/request.rb
175
191
  - lib/soapy_cake/response.rb
176
192
  - lib/soapy_cake/version.rb
177
193
  - soapy_cake.gemspec
194
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_/_offer_contract_caps/removes_a_cap_for_an_offer_contract.yml
195
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_/_offer_contract_caps/updates_a_cap_for_an_offer_contract.yml
196
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_contracts/creates_an_offer_contract.yml
197
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_contracts/updates_an_offer_contract.yml
198
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_tiers/adds_an_offer_tier.yml
199
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offers/creates_an_offer.yml
200
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offers/updates_an_offer.yml
178
201
  - spec/fixtures/vcr_cassettes/Integration_test/raises_if_there_is_an_error.yml
179
202
  - spec/fixtures/vcr_cassettes/Integration_test/returns_a_clicks_report_with_a_defined_time_range.yml
180
203
  - spec/fixtures/vcr_cassettes/Integration_test/returns_an_affiliate_with_correct_data_types.yml
204
+ - spec/lib/soapy_cake/addedit_integration_spec.rb
181
205
  - spec/lib/soapy_cake/admin_spec.rb
182
206
  - spec/lib/soapy_cake/affiliate_spec.rb
183
207
  - spec/lib/soapy_cake/integration_spec.rb
208
+ - spec/lib/soapy_cake/request_spec.rb
184
209
  - spec/spec_helper.rb
185
210
  homepage: http://ad2games.com
186
211
  licenses:
@@ -202,15 +227,24 @@ required_rubygems_version: !ruby/object:Gem::Requirement
202
227
  version: '0'
203
228
  requirements: []
204
229
  rubyforge_project:
205
- rubygems_version: 2.4.5
230
+ rubygems_version: 2.4.6
206
231
  signing_key:
207
232
  specification_version: 4
208
233
  summary: Simple client for the CAKE API
209
234
  test_files:
235
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_/_offer_contract_caps/removes_a_cap_for_an_offer_contract.yml
236
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_/_offer_contract_caps/updates_a_cap_for_an_offer_contract.yml
237
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_contracts/creates_an_offer_contract.yml
238
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_contracts/updates_an_offer_contract.yml
239
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offer_tiers/adds_an_offer_tier.yml
240
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offers/creates_an_offer.yml
241
+ - spec/fixtures/vcr_cassettes/ADDEDIT_integration_test/offers/updates_an_offer.yml
210
242
  - spec/fixtures/vcr_cassettes/Integration_test/raises_if_there_is_an_error.yml
211
243
  - spec/fixtures/vcr_cassettes/Integration_test/returns_a_clicks_report_with_a_defined_time_range.yml
212
244
  - spec/fixtures/vcr_cassettes/Integration_test/returns_an_affiliate_with_correct_data_types.yml
245
+ - spec/lib/soapy_cake/addedit_integration_spec.rb
213
246
  - spec/lib/soapy_cake/admin_spec.rb
214
247
  - spec/lib/soapy_cake/affiliate_spec.rb
215
248
  - spec/lib/soapy_cake/integration_spec.rb
249
+ - spec/lib/soapy_cake/request_spec.rb
216
250
  - spec/spec_helper.rb