hasoffersv3 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6af628ce4e57076de7db4b320d0014e7add4e822
4
- data.tar.gz: 0eb139d1daf9e20975167f4bd39465056ae189c4
3
+ metadata.gz: da538c54d138ea729812c0ba860ad4e207657338
4
+ data.tar.gz: eefed68384c2beda2a459d9060ef5b9b7c3b970d
5
5
  SHA512:
6
- metadata.gz: 20e97013eff51bfc4801331a404124417a993db2e72c5beabb43000ff833fa0655b820b0a5d242fdf90a79f8fe69686c9a08ce4f5eafd06300b965aa23a7826e
7
- data.tar.gz: a0da382c5b472e8f1de5753ab205b4e7454fa0de447020272d38e9ad2cc7cf5083d2852358f20b9d562e9ec95fd21606f10aa0c90be0423e778496d397e692a0
6
+ metadata.gz: 3a581c12f4dfd240f662b5472381d9e73d56c1b67727810ddac768e04aeb3dd836930194ec312503abdd8c3c791ca14f5bfe6a435656d2fc788ea94c5fcc9014
7
+ data.tar.gz: 1ab778d3121d3bf5b006369ce03d4b1483cf35400736bf646f0bad978bfcd62deb1f3d4a001c0085e8401b4abbf48bd8c5ac03f6ec8f16dd674b95ebc336818a
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ # 0.2.3
2
+ - Support "Offer/generateTrackingLink" method
3
+ - Support "Affiliate/create" method
4
+
1
5
  # 0.2.2
2
6
  - Support "Offer/findAllIdsByAffiliateId" method
3
7
  - Support "Affiliate_Offer/findMyOffers" method
@@ -0,0 +1,29 @@
1
+ class HasOffersV3
2
+ class AdvertiserBilling < Base
3
+ class << self
4
+ def find_all_invoices(params = {})
5
+ post_request 'findAllInvoices', params
6
+ end
7
+
8
+ def create_invoice(params = {})
9
+ requires! params, [:data]
10
+ post_request 'createInvoice', params
11
+ end
12
+
13
+ def find_invoice_by_id(params = {})
14
+ requires! params, [:id]
15
+ post_request 'findInvoiceById', params
16
+ end
17
+
18
+ def add_invoice_item(params = {})
19
+ requires! params, [:invoice_id, :data]
20
+ post_request 'addInvoiceItem', params
21
+ end
22
+
23
+ def remove_invoice_item(params = {})
24
+ requires! params, [:id]
25
+ post_request 'removeInvoiceItem', params
26
+ end
27
+ end
28
+ end
29
+ end
@@ -17,6 +17,12 @@ class HasOffersV3
17
17
  def update_payment_method_paypal(params = {})
18
18
  post_request 'updatePaymentMethodPaypal', params
19
19
  end
20
+
21
+ def create (params = {})
22
+ requires! params, [:data]
23
+ requires! params[:data], [:zipcode, :company]
24
+ post_request 'create', params
25
+ end
20
26
  end
21
27
  end
22
28
  end
@@ -0,0 +1,30 @@
1
+ class HasOffersV3
2
+ class AffiliateBilling < Base
3
+ class << self
4
+ def find_last_invoice(params = {})
5
+ requires! params, [:affiliate_id]
6
+ post_request 'findLastInvoice', params
7
+ end
8
+
9
+ def create_invoice(params = {})
10
+ requires! params, [:data]
11
+ post_request 'createInvoice', params
12
+ end
13
+
14
+ def find_invoice_by_id(params = {})
15
+ requires! params, [:id]
16
+ post_request 'findInvoiceById', params
17
+ end
18
+
19
+ def add_invoice_item(params = {})
20
+ requires! params, [:invoice_id, :data]
21
+ post_request 'addInvoiceItem', params
22
+ end
23
+
24
+ def remove_invoice_item(params = {})
25
+ requires! params, [:id]
26
+ post_request 'removeInvoiceItem', params
27
+ end
28
+ end
29
+ end
30
+ end
@@ -44,6 +44,11 @@ class HasOffersV3
44
44
  requires! params, [:id, :affiliate_id]
45
45
  post_request 'removePayout', params
46
46
  end
47
+
48
+ def generate_tracking_link(params = {})
49
+ requires! params, [:offer_id, :affiliate_id]
50
+ post_request 'generateTrackingLink', params
51
+ end
47
52
  end
48
53
  end
49
54
  end
@@ -1,3 +1,3 @@
1
1
  class HasOffersV3
2
- VERSION = '0.2.2'
2
+ VERSION = '0.2.3'
3
3
  end
data/lib/hasoffersv3.rb CHANGED
@@ -6,7 +6,9 @@ require 'hasoffersv3/client'
6
6
  require "hasoffersv3/#{file}"
7
7
  end
8
8
 
9
+ require 'hasoffersv3/advertiser_billing'
9
10
  require 'hasoffersv3/affiliate_offer'
11
+ require 'hasoffersv3/affiliate_billing'
10
12
  require 'hasoffersv3/adapter'
11
13
 
12
14
  class HasOffersV3
@@ -14,8 +16,10 @@ class HasOffersV3
14
16
  API_TARGETS = {
15
17
  advertisers: HasOffersV3::Advertiser,
16
18
  advertiser_users: HasOffersV3::AdvertiserUser,
19
+ advertiser_billing: HasOffersV3::AdvertiserBilling,
17
20
  affiliates: HasOffersV3::Affiliate,
18
21
  affiliate_offers: HasOffersV3::AffiliateOffer,
22
+ affiliate_billing: HasOffersV3::AffiliateBilling,
19
23
  conversions: HasOffersV3::Conversion,
20
24
  offers: HasOffersV3::Offer,
21
25
  raw_logs: HasOffersV3::RawLog,
@@ -0,0 +1,97 @@
1
+ require 'spec_helper'
2
+
3
+ describe HasOffersV3::AdvertiserBilling do
4
+ subject { HasOffersV3::AdvertiserBilling }
5
+
6
+ let(:url) { api_url 'AdvertiserBilling' }
7
+
8
+ describe '.find_all_invoices' do
9
+ it 'makes a proper request call' do
10
+ stub_call
11
+ response = subject.find_all_invoices
12
+ a_request(:post, url).with(body: hash_including({'Method' => 'findAllInvoices'})).should have_been_made
13
+ validate_call response
14
+ end
15
+ end
16
+
17
+ describe '.create_invoice' do
18
+ context 'when data is specified' do
19
+ it 'makes a proper request call' do
20
+ stub_call
21
+ response = subject.create_invoice(data: {advertiser_id: 1, start_date: '2014-10-01', end_date: '2014-10-30'})
22
+ a_request(:post, url).with(body: hash_including({
23
+ 'Method' => 'createInvoice',
24
+ 'data' => {'advertiser_id' => '1', 'start_date' => '2014-10-01', 'end_date' => '2014-10-30'}
25
+ })).should have_been_made
26
+ validate_call response
27
+ end
28
+ end
29
+
30
+ context 'when data is not specified' do
31
+ it 'raises an exception' do
32
+ expect { subject.create_invoice }.to raise_error ArgumentError
33
+ end
34
+ end
35
+ end
36
+
37
+ describe '.find_invoice_by_id' do
38
+ context 'when ID is specified' do
39
+ it 'makes a proper request call' do
40
+ stub_call
41
+ response = subject.find_invoice_by_id(id: '1')
42
+ a_request(:post, url).with(body: hash_including({'Method' => 'findInvoiceById', 'id' => '1'})).should have_been_made
43
+ validate_call response
44
+ end
45
+ end
46
+
47
+ context 'when ID is missing' do
48
+ it 'raises an exception' do
49
+ expect { subject.find_invoice_by_id }.to raise_error ArgumentError
50
+ end
51
+ end
52
+ end
53
+
54
+ describe '.add_invoice_item' do
55
+ context 'when invoice ID and data is specified' do
56
+ it 'makes a proper request call' do
57
+ stub_call
58
+ response = subject.add_invoice_item(invoice_id: 1, data: {memo: 'abc'})
59
+ a_request(:post, url).with(body: hash_including({
60
+ 'Method' => 'addInvoiceItem',
61
+ 'invoice_id' => '1',
62
+ 'data' => {'memo' => 'abc'}
63
+ })).should have_been_made
64
+ validate_call response
65
+ end
66
+ end
67
+
68
+ context 'when invoice ID is not specified' do
69
+ it 'raises an exception' do
70
+ expect { subject.add_invoice_item(data: {memo: 'abc'}) }.to raise_error ArgumentError
71
+ end
72
+ end
73
+
74
+ context 'when data is not specified' do
75
+ it 'raises an exception' do
76
+ expect { subject.add_invoice_item(invoice_id: 1) }.to raise_error ArgumentError
77
+ end
78
+ end
79
+ end
80
+
81
+ describe '.remove_invoice_item' do
82
+ context 'when ID is specified' do
83
+ it 'makes a proper request call' do
84
+ stub_call
85
+ response = subject.remove_invoice_item(id: '1')
86
+ a_request(:post, url).with(body: hash_including({'Method' => 'removeInvoiceItem', 'id' => '1'})).should have_been_made
87
+ validate_call response
88
+ end
89
+ end
90
+
91
+ context 'when ID is missing' do
92
+ it 'raises an exception' do
93
+ expect { subject.remove_invoice_item }.to raise_error ArgumentError
94
+ end
95
+ end
96
+ end
97
+ end
@@ -0,0 +1,105 @@
1
+ require 'spec_helper'
2
+
3
+ describe HasOffersV3::AffiliateBilling do
4
+ subject { HasOffersV3::AffiliateBilling }
5
+
6
+ let(:url) { api_url 'AffiliateBilling' }
7
+
8
+ describe '.find_last_invoice' do
9
+ context 'when affiliate ID is specified' do
10
+ it 'makes a proper request call' do
11
+ stub_call
12
+ response = subject.find_last_invoice(affiliate_id: '1')
13
+ a_request(:post, url).with(body: hash_including({'Method' => 'findLastInvoice', 'affiliate_id' => '1'})).should have_been_made
14
+ validate_call response
15
+ end
16
+ end
17
+
18
+ context 'when affiliate ID is missing' do
19
+ it 'raises an exception' do
20
+ expect { subject.find_last_invoice }.to raise_error ArgumentError
21
+ end
22
+ end
23
+ end
24
+
25
+ describe '.create_invoice' do
26
+ context 'when data is specified' do
27
+ it 'makes a proper request call' do
28
+ stub_call
29
+ response = subject.create_invoice(data: {affiliate_id: 1, start_date: '2014-10-01', end_date: '2014-10-30'})
30
+ a_request(:post, url).with(body: hash_including({
31
+ 'Method' => 'createInvoice',
32
+ 'data' => {'affiliate_id' => '1', 'start_date' => '2014-10-01', 'end_date' => '2014-10-30'}
33
+ })).should have_been_made
34
+ validate_call response
35
+ end
36
+ end
37
+
38
+ context 'when data is not specified' do
39
+ it 'raises an exception' do
40
+ expect { subject.create_invoice }.to raise_error ArgumentError
41
+ end
42
+ end
43
+ end
44
+
45
+ describe '.find_invoice_by_id' do
46
+ context 'when ID is specified' do
47
+ it 'makes a proper request call' do
48
+ stub_call
49
+ response = subject.find_invoice_by_id(id: '1')
50
+ a_request(:post, url).with(body: hash_including({'Method' => 'findInvoiceById', 'id' => '1'})).should have_been_made
51
+ validate_call response
52
+ end
53
+ end
54
+
55
+ context 'when ID is missing' do
56
+ it 'raises an exception' do
57
+ expect { subject.find_invoice_by_id }.to raise_error ArgumentError
58
+ end
59
+ end
60
+ end
61
+
62
+ describe '.add_invoice_item' do
63
+ context 'when invoice ID and data is specified' do
64
+ it 'makes a proper request call' do
65
+ stub_call
66
+ response = subject.add_invoice_item(invoice_id: 1, data: {memo: 'abc'})
67
+ a_request(:post, url).with(body: hash_including({
68
+ 'Method' => 'addInvoiceItem',
69
+ 'invoice_id' => '1',
70
+ 'data' => {'memo' => 'abc'}
71
+ })).should have_been_made
72
+ validate_call response
73
+ end
74
+ end
75
+
76
+ context 'when invoice ID is not specified' do
77
+ it 'raises an exception' do
78
+ expect { subject.add_invoice_item(data: {memo: 'abc'}) }.to raise_error ArgumentError
79
+ end
80
+ end
81
+
82
+ context 'when data is not specified' do
83
+ it 'raises an exception' do
84
+ expect { subject.add_invoice_item(invoice_id: 1) }.to raise_error ArgumentError
85
+ end
86
+ end
87
+ end
88
+
89
+ describe '.remove_invoice_item' do
90
+ context 'when ID is specified' do
91
+ it 'makes a proper request call' do
92
+ stub_call
93
+ response = subject.remove_invoice_item(id: '1')
94
+ a_request(:post, url).with(body: hash_including({'Method' => 'removeInvoiceItem', 'id' => '1'})).should have_been_made
95
+ validate_call response
96
+ end
97
+ end
98
+
99
+ context 'when ID is missing' do
100
+ it 'raises an exception' do
101
+ expect { subject.remove_invoice_item }.to raise_error ArgumentError
102
+ end
103
+ end
104
+ end
105
+ end
@@ -47,4 +47,26 @@ describe HasOffersV3::Affiliate do
47
47
  validate_call response
48
48
  end
49
49
  end
50
+
51
+ describe 'create' do
52
+ context 'when required params are missing' do
53
+ it 'should fail without data' do
54
+ expect { subject.create }.to raise_error ArgumentError
55
+ end
56
+ it 'should fail without data["company"]' do
57
+ expect { subject.create data: { zipcode: 1234567 }}.to raise_error ArgumentError
58
+ end
59
+ it 'should fail without data["zipcode"]' do
60
+ expect { subject.create data: { company: 'xyz@applift.com' }}.to raise_error ArgumentError
61
+ end
62
+ end
63
+
64
+ it 'should make a successful request call' do
65
+ response = subject.create data: { company: "xyz@gmail.com", zipcode: "10178" }
66
+ expect(a_request(:post, url).with(body: hash_including({'Method' => 'create', 'data' => {'company' => 'xyz@gmail.com',
67
+ 'zipcode' => '10178'}}))).to have_been_made
68
+ validate_call response
69
+ end
70
+ end
71
+
50
72
  end
@@ -126,4 +126,23 @@ describe HasOffersV3::Offer do
126
126
  end
127
127
  end
128
128
  end
129
+
130
+ describe '.generate_tracking_link' do
131
+ it 'should make a proper request call' do
132
+ stub_call
133
+ response = subject.generate_tracking_link offer_id: 1, affiliate_id: 123
134
+ expect(a_request(:post, url).with(body: hash_including({'Method' => 'generateTrackingLink','offer_id' => '1',
135
+ 'affiliate_id' => '123'}))).to have_been_made
136
+ validate_call response
137
+ end
138
+
139
+ context 'when required params are missing' do
140
+ it 'should fail without offer_id' do
141
+ expect { subject.generate_tracking_link affiliate_id: 1}.to raise_error ArgumentError
142
+ end
143
+ it 'should fail without affiliate_id' do
144
+ expect { subject.generate_tracking_link offer_id: 10 }.to raise_error ArgumentError
145
+ end
146
+ end
147
+ end
129
148
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hasoffersv3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maximilian Seifert
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-19 00:00:00.000000000 Z
12
+ date: 2015-03-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oj
@@ -117,8 +117,10 @@ files:
117
117
  - lib/hasoffersv3.rb
118
118
  - lib/hasoffersv3/adapter.rb
119
119
  - lib/hasoffersv3/advertiser.rb
120
+ - lib/hasoffersv3/advertiser_billing.rb
120
121
  - lib/hasoffersv3/advertiser_user.rb
121
122
  - lib/hasoffersv3/affiliate.rb
123
+ - lib/hasoffersv3/affiliate_billing.rb
122
124
  - lib/hasoffersv3/affiliate_offer.rb
123
125
  - lib/hasoffersv3/base.rb
124
126
  - lib/hasoffersv3/client.rb
@@ -131,8 +133,10 @@ files:
131
133
  - lib/hasoffersv3/testing.rb
132
134
  - lib/hasoffersv3/version.rb
133
135
  - spec/lib/adapter_spec.rb
136
+ - spec/lib/advertiser_billing_spec.rb
134
137
  - spec/lib/advertiser_spec.rb
135
138
  - spec/lib/advertiser_user_spec.rb
139
+ - spec/lib/affiliate_billing_spec.rb
136
140
  - spec/lib/affiliate_offer_spec.rb
137
141
  - spec/lib/affiliate_spec.rb
138
142
  - spec/lib/base_spec.rb
@@ -169,8 +173,10 @@ specification_version: 4
169
173
  summary: REST Client for the HasOffers API, version 3.
170
174
  test_files:
171
175
  - spec/lib/adapter_spec.rb
176
+ - spec/lib/advertiser_billing_spec.rb
172
177
  - spec/lib/advertiser_spec.rb
173
178
  - spec/lib/advertiser_user_spec.rb
179
+ - spec/lib/affiliate_billing_spec.rb
174
180
  - spec/lib/affiliate_offer_spec.rb
175
181
  - spec/lib/affiliate_spec.rb
176
182
  - spec/lib/base_spec.rb