hasoffersv3 0.2.2 → 0.2.3

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