hasoffersv3 0.4.1 → 0.5.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: 537eb480dbf6608cf635d04031adbf6d6c33a6d7
4
- data.tar.gz: 57ee201a3270c904e2660e8bc01e8a4f9afc20ba
3
+ metadata.gz: d6d4931962a54c3bf75cc4169d8655914a15545c
4
+ data.tar.gz: f780dbccf7809ffa58f85c71a86b48c9061d185f
5
5
  SHA512:
6
- metadata.gz: a861581ccb305f93dd235c44778edca934f1166299e6d1d9caf907cb1d47de51af19490453f28e15fe334047872078285e658bf601dcefa5dd273c5cbc79c088
7
- data.tar.gz: 2f447bc955d8f3b2a02e06a45bcc7739f39abe2be711d0cd7f25b046e12fab673ae4bb0a5d50db2dd424b528ca17ec847e73efd49b20d1f05df64001ae50e9a2
6
+ metadata.gz: c65325e39ed7c68f52e94b657f0626723921c7927be29a4da35e0d208d1f8cb56f3cb0212c32ef16baddbb9947d21b4f7dfd672fd96b464a39ebd817d65e00b4
7
+ data.tar.gz: cdd6b8143f3c9b0895a93c7042a65f4cbf0aea5240413a9b5a69ef22c3a161254e567436d55be75695622891d1473bc39449b2d32961682d3cd9c5c17804190b
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --color
2
2
  --format documentation
3
+ --require=spec_helper
data/.travis.yml CHANGED
@@ -3,9 +3,6 @@ script: bundle exec rspec spec
3
3
  before_install:
4
4
  - gem install bundler
5
5
  rvm:
6
- - 1.9.3
7
- - 2.0.0
8
- - 2.1.8
9
- - 2.2.4
10
- - 2.3.0
6
+ - 2.2.5
7
+ - 2.3.1
11
8
  - ruby-head
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ### Overview
1
+ ### Overview
2
2
 
3
3
  [![Build status](https://api.travis-ci.org/applift/hasoffersv3.png?branch=master)](http://travis-ci.org/applift/hasoffersv3)
4
4
 
@@ -10,10 +10,8 @@ This gem provides a wrapper around HasOffers API in version 3, [HasOffers APIv3
10
10
 
11
11
  Supported ruby versions:
12
12
 
13
- * 1.9.3
14
- * 2.0
15
- * 2.1
16
13
  * 2.2
14
+ * 2.3
17
15
 
18
16
  ## Installation
19
17
 
@@ -70,6 +68,20 @@ HasOffersV3::Advertiser.signup({
70
68
  })
71
69
  ```
72
70
 
71
+ ### Logging
72
+
73
+ To enable log you can set a logger in configuration. All HTTP requests and responses will be logged.
74
+
75
+ To disable it, just set the logger configuration to `nil` value. Default is disabled.
76
+
77
+ An example setting Rails logger:
78
+
79
+ ```ruby
80
+ HasOffersV3.configure do |config|
81
+ config.logger = Rails.logger
82
+ end
83
+ ```
84
+
73
85
  ## Testing
74
86
 
75
87
  If `RAILS_ENV` or `RACK_ENV` is set to `test`, or there's a `TEST`
data/hasoffersv3.gemspec CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_dependency 'activesupport' # for to_param method
22
22
  s.add_development_dependency 'webmock'
23
- s.add_development_dependency 'rspec', '~> 3.0.0'
23
+ s.add_development_dependency 'rspec', '~> 3.4.0'
24
24
  s.add_development_dependency 'bundler', '~> 1.3'
25
25
  s.add_development_dependency 'rake'
26
26
  end
@@ -17,21 +17,45 @@ class HasOffersV3
17
17
  post_request 'findById', params
18
18
  end
19
19
 
20
+ def get_approval_questions(params = {})
21
+ requires! params, [:offer_id]
22
+ get_request 'getApprovalQuestions', params
23
+ end
24
+
20
25
  def get_categories(params = {})
21
26
  requires! params, [:ids]
22
27
  post_request 'getCategories', params
23
28
  end
24
29
 
30
+ def get_payout_details(params = {})
31
+ requires! params, [:offer_id]
32
+ get_request 'getPayoutDetails', params
33
+ end
34
+
35
+ def get_pixels(params = {})
36
+ requires! params, [:id]
37
+ get_request 'getPixels', params
38
+ end
39
+
25
40
  def get_target_countries(params = {})
26
41
  requires! params, [:ids]
27
42
  post_request 'getTargetCountries', params
28
43
  end
29
44
 
45
+ def get_thumbnail(params = {})
46
+ requires! params, [:ids]
47
+ get_request 'getThumbnail', params
48
+ end
49
+
30
50
  def generate_tracking_link(params = {})
31
51
  requires! params, [:offer_id]
32
52
  post_request 'generateTrackingLink', params
33
53
  end
34
54
 
55
+ def find_my_approved_offers(params = {})
56
+ get_request 'findMyApprovedOffers', params
57
+ end
58
+
35
59
  def find_my_offers(params = {})
36
60
  post_request 'findMyOffers', params
37
61
  end
@@ -25,8 +25,13 @@ class HasOffersV3
25
25
  http = new_http(uri)
26
26
  raw_request = Net::HTTP::Get.new(uri.request_uri)
27
27
  end
28
+
29
+ logger.log_request(raw_request, uri)
30
+
28
31
  http_response = execute_request(http, raw_request)
29
32
 
33
+ logger.log_response(http_response)
34
+
30
35
  Response.new(http_response, @configuration.json_driver)
31
36
  end
32
37
 
@@ -60,5 +65,11 @@ class HasOffersV3
60
65
  configuration.base_uri
61
66
  end
62
67
 
68
+ private
69
+
70
+ def logger
71
+ configuration.http_logger
72
+ end
73
+
63
74
  end
64
75
  end
@@ -19,7 +19,8 @@ class HasOffersV3
19
19
  base_path: '/v3',
20
20
  network_id: '',
21
21
  api_key: '',
22
- json_driver: self.default_json_driver
22
+ json_driver: self.default_json_driver,
23
+ logger: nil
23
24
  }.freeze
24
25
 
25
26
  DEFAULTS.keys.each do |option_name|
@@ -49,6 +50,10 @@ class HasOffersV3
49
50
  end
50
51
  end
51
52
 
53
+ def http_logger
54
+ @http_logger ||= HasOffersV3::Logger.new(logger)
55
+ end
56
+
52
57
  def base_uri
53
58
  "#{protocol}://#{host}#{base_path}"
54
59
  end
@@ -0,0 +1,45 @@
1
+ class HasOffersV3
2
+ class Logger
3
+ LABEL = '[HasOffersV3]'.freeze
4
+
5
+ attr_reader :log
6
+
7
+ def initialize(log = nil)
8
+ @log = log
9
+ end
10
+
11
+ def log_request(request, uri)
12
+ log_http(request, "Request: #{request.method} #{uri}")
13
+ end
14
+
15
+ def log_response(response)
16
+ log_http(response, "Response: HTTP/#{response.http_version} #{response.code} #{response.message}")
17
+ end
18
+
19
+ private
20
+
21
+ def log_http(http, first_line)
22
+ return unless log
23
+
24
+ message = format_message(http, first_line)
25
+ log.info(message)
26
+ end
27
+
28
+ def format_message(http, first_line)
29
+ StringIO.open do |s|
30
+ s.puts("#{LABEL} #{first_line}")
31
+ append_headers(s, http.each_capitalized)
32
+ s.puts(http.body) unless http.body.to_s.empty?
33
+ s.string
34
+ end
35
+ end
36
+
37
+ def append_headers(message, headers)
38
+ headers.each do |name, value|
39
+ message.puts("#{name}: #{value}")
40
+ end
41
+
42
+ message.puts
43
+ end
44
+ end
45
+ end
@@ -9,5 +9,9 @@ class HasOffersV3
9
9
  def get_mod_summary_logs(params = {}, &block)
10
10
  get_request 'getModSummaryLogs', params, &block
11
11
  end
12
+
13
+ def get_stats(params = {}, &block)
14
+ post_request 'getStats', params, &block
15
+ end
12
16
  end
13
17
  end
@@ -1,3 +1,3 @@
1
1
  class HasOffersV3
2
- VERSION = '0.4.1'
2
+ VERSION = '0.5.0'
3
3
  end
data/lib/hasoffersv3.rb CHANGED
@@ -3,7 +3,7 @@ require 'json'
3
3
 
4
4
  require 'hasoffersv3/client'
5
5
 
6
- %w!base affiliate response conversion raw_log report configuration advertiser advertiser_user offer offer_pixel employee application!.each do |file|
6
+ %w!base affiliate response conversion raw_log report configuration advertiser advertiser_user offer offer_pixel employee application logger!.each do |file|
7
7
  require "hasoffersv3/#{file}"
8
8
  end
9
9
 
@@ -1,11 +1,7 @@
1
- require 'spec_helper'
2
-
3
1
  describe HasOffersV3::AdvertiserBilling do
4
- subject { HasOffersV3::AdvertiserBilling }
5
-
6
2
  let(:url) { api_url 'AdvertiserBilling' }
7
3
 
8
- describe '.find_all_invoices' do
4
+ describe '#find_all_invoices' do
9
5
  it 'makes a proper request call' do
10
6
  stub_call
11
7
  response = subject.find_all_invoices
@@ -14,7 +10,7 @@ describe HasOffersV3::AdvertiserBilling do
14
10
  end
15
11
  end
16
12
 
17
- describe '.create_invoice' do
13
+ describe '#create_invoice' do
18
14
  context 'when data is specified' do
19
15
  it 'makes a proper request call' do
20
16
  stub_call
@@ -35,7 +31,7 @@ describe HasOffersV3::AdvertiserBilling do
35
31
  end
36
32
  end
37
33
 
38
- describe '.find_invoice_by_id' do
34
+ describe '#find_invoice_by_id' do
39
35
  context 'when ID is specified' do
40
36
  it 'makes a proper request call' do
41
37
  stub_call
@@ -52,16 +48,16 @@ describe HasOffersV3::AdvertiserBilling do
52
48
  end
53
49
  end
54
50
 
55
- describe '.add_invoice_item' do
51
+ describe '#add_invoice_item' do
56
52
  context 'when invoice ID and data is specified' do
57
53
  it 'makes a proper request call' do
58
54
  stub_call
59
55
  response = subject.add_invoice_item(invoice_id: 1, data: {memo: 'abc'})
60
- a_request(:post, url).with(body: hash_including({
56
+ expect(a_request(:post, url).with(body: hash_including({
61
57
  'Method' => 'addInvoiceItem',
62
58
  'invoice_id' => '1',
63
59
  'data' => {'memo' => 'abc'}
64
- })).should have_been_made
60
+ }))).to have_been_made
65
61
  validate_call response
66
62
  end
67
63
  end
@@ -79,12 +75,12 @@ describe HasOffersV3::AdvertiserBilling do
79
75
  end
80
76
  end
81
77
 
82
- describe '.remove_invoice_item' do
78
+ describe '#remove_invoice_item' do
83
79
  context 'when ID is specified' do
84
80
  it 'makes a proper request call' do
85
81
  stub_call
86
82
  response = subject.remove_invoice_item(id: '1')
87
- a_request(:post, url).with(body: hash_including({'Method' => 'removeInvoiceItem', 'id' => '1'})).should have_been_made
83
+ expect(a_request(:post, url).with(body: hash_including({'Method' => 'removeInvoiceItem', 'id' => '1'}))).to have_been_made
88
84
  validate_call response
89
85
  end
90
86
  end
@@ -1,12 +1,8 @@
1
- require 'spec_helper'
2
-
3
1
  describe HasOffersV3::Advertiser do
4
- subject { HasOffersV3::Advertiser.new }
5
-
6
2
  let(:url) { api_url 'Advertiser' }
7
3
 
8
- describe '.find_all' do
9
- it 'should make a proper request call' do
4
+ describe '#find_all' do
5
+ it 'makes a proper request call' do
10
6
  stub_call
11
7
  response = subject.find_all
12
8
  expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAll'}))).to have_been_made
@@ -14,8 +10,8 @@ describe HasOffersV3::Advertiser do
14
10
  end
15
11
  end
16
12
 
17
- describe '.find_all_ids' do
18
- it 'should make a proper request call' do
13
+ describe '#find_all_ids' do
14
+ it 'makes a proper request call' do
19
15
  stub_call
20
16
  response = subject.find_all_ids
21
17
  expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAllIds'}))).to have_been_made
@@ -23,8 +19,8 @@ describe HasOffersV3::Advertiser do
23
19
  end
24
20
  end
25
21
 
26
- describe '.find_by_id' do
27
- it 'should make a proper request call' do
22
+ describe '#find_by_id' do
23
+ it 'makes a proper request call' do
28
24
  stub_call
29
25
  response = subject.find_by_id id: 1
30
26
  expect(a_request(:post, url).with(body: hash_including({'Method' => 'findById', 'id' => '1'}))).to have_been_made
@@ -32,7 +28,7 @@ describe HasOffersV3::Advertiser do
32
28
  end
33
29
 
34
30
  context 'when there is no id' do
35
- it 'should raise exception' do
31
+ it 'raises exception' do
36
32
  expect { subject.find_by_id failed_id: 1 }.to raise_error ArgumentError
37
33
  end
38
34
  end
@@ -1,12 +1,8 @@
1
- require 'spec_helper'
2
-
3
1
  describe HasOffersV3::AdvertiserUser do
4
- subject { HasOffersV3::AdvertiserUser.new }
5
-
6
2
  let(:url) { api_url 'AdvertiserUser' }
7
3
 
8
- describe '.find_all' do
9
- it 'should make a proper request call' do
4
+ describe '#find_all' do
5
+ it 'makes a proper request call' do
10
6
  stub_call
11
7
  response = subject.find_all
12
8
  expect(a_request(:post, url).with(body: hash_including({'Method' => 'findAll'}))).to have_been_made
@@ -1,16 +1,12 @@
1
- require 'spec_helper'
2
-
3
1
  describe HasOffersV3::AffiliateBilling do
4
- subject { HasOffersV3::AffiliateBilling.new }
5
-
6
2
  let(:url) { api_url 'AffiliateBilling' }
7
3
 
8
- describe '.find_last_invoice' do
4
+ describe '#find_last_invoice' do
9
5
  context 'when affiliate ID is specified' do
10
6
  it 'makes a proper request call' do
11
7
  stub_call
12
8
  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
9
+ expect(a_request(:post, url).with(body: hash_including({'Method' => 'findLastInvoice', 'affiliate_id' => '1'}))).to have_been_made
14
10
  validate_call response
15
11
  end
16
12
  end
@@ -22,15 +18,15 @@ describe HasOffersV3::AffiliateBilling do
22
18
  end
23
19
  end
24
20
 
25
- describe '.create_invoice' do
21
+ describe '#create_invoice' do
26
22
  context 'when data is specified' do
27
23
  it 'makes a proper request call' do
28
24
  stub_call
29
25
  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({
26
+ expect(a_request(:post, url).with(body: hash_including({
31
27
  'Method' => 'createInvoice',
32
28
  'data' => {'affiliate_id' => '1', 'start_date' => '2014-10-01', 'end_date' => '2014-10-30'}
33
- })).should have_been_made
29
+ }))).to have_been_made
34
30
  validate_call response
35
31
  end
36
32
  end
@@ -42,12 +38,12 @@ describe HasOffersV3::AffiliateBilling do
42
38
  end
43
39
  end
44
40
 
45
- describe '.find_invoice_by_id' do
41
+ describe '#find_invoice_by_id' do
46
42
  context 'when ID is specified' do
47
43
  it 'makes a proper request call' do
48
44
  stub_call
49
45
  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
46
+ expect(a_request(:post, url).with(body: hash_including({'Method' => 'findInvoiceById', 'id' => '1'}))).to have_been_made
51
47
  validate_call response
52
48
  end
53
49
  end
@@ -59,16 +55,16 @@ describe HasOffersV3::AffiliateBilling do
59
55
  end
60
56
  end
61
57
 
62
- describe '.add_invoice_item' do
58
+ describe '#add_invoice_item' do
63
59
  context 'when invoice ID and data is specified' do
64
60
  it 'makes a proper request call' do
65
61
  stub_call
66
62
  response = subject.add_invoice_item(invoice_id: 1, data: {memo: 'abc'})
67
- a_request(:post, url).with(body: hash_including({
63
+ expect(a_request(:post, url).with(body: hash_including({
68
64
  'Method' => 'addInvoiceItem',
69
65
  'invoice_id' => '1',
70
66
  'data' => {'memo' => 'abc'}
71
- })).should have_been_made
67
+ }))).to have_been_made
72
68
  validate_call response
73
69
  end
74
70
  end
@@ -86,12 +82,12 @@ describe HasOffersV3::AffiliateBilling do
86
82
  end
87
83
  end
88
84
 
89
- describe '.remove_invoice_item' do
85
+ describe '#remove_invoice_item' do
90
86
  context 'when ID is specified' do
91
87
  it 'makes a proper request call' do
92
88
  stub_call
93
89
  response = subject.remove_invoice_item(id: '1')
94
- a_request(:post, url).with(body: hash_including({'Method' => 'removeInvoiceItem', 'id' => '1'})).should have_been_made
90
+ expect(a_request(:post, url).with(body: hash_including({'Method' => 'removeInvoiceItem', 'id' => '1'}))).to have_been_made
95
91
  validate_call response
96
92
  end
97
93
  end
@@ -1,11 +1,7 @@
1
- require 'spec_helper'
2
-
3
1
  describe HasOffersV3::AffiliateOffer do
4
- subject { HasOffersV3::AffiliateOffer.new }
5
-
6
2
  let(:url) { api_url 'Affiliate_Offer' }
7
3
 
8
- describe '.target' do
4
+ describe '#target' do
9
5
  specify { expect(subject.target).to eq('Affiliate_Offer')}
10
6
  end
11
7
 
@@ -13,8 +9,8 @@ describe HasOffersV3::AffiliateOffer do
13
9
  specify { expect(url).to eq('https://api.hasoffers.com/v3/Affiliate_Offer.json') }
14
10
  end
15
11
 
16
- describe '.find_all' do
17
- it 'should make a proper request call' do
12
+ describe '#find_all' do
13
+ it 'makes a proper request call' do
18
14
  stub_call
19
15
  response = subject.find_all
20
16
  request = a_request(:post, url).with(body: hash_including('Method' => 'findAll'))
@@ -23,8 +19,8 @@ describe HasOffersV3::AffiliateOffer do
23
19
  end
24
20
  end
25
21
 
26
- describe '.find_by_id' do
27
- it 'should make a proper request call' do
22
+ describe '#find_by_id' do
23
+ it 'makes a proper request call' do
28
24
  stub_call
29
25
  response = subject.find_by_id id: 1
30
26
  request = a_request(:post, url).with(body: hash_including('Method' => 'findById', 'id' => '1'))
@@ -34,14 +30,14 @@ describe HasOffersV3::AffiliateOffer do
34
30
  end
35
31
 
36
32
  context 'when there is no id' do
37
- it 'should raise exception' do
33
+ it 'raises exception' do
38
34
  expect { subject.find_by_id }.to raise_error ArgumentError
39
35
  end
40
36
  end
41
37
  end
42
38
 
43
- describe '.get_categories' do
44
- it 'should make a proper request call' do
39
+ describe '#get_categories' do
40
+ it 'makes a proper request call' do
45
41
  stub_call
46
42
  response = subject.get_categories ids: [1, 2]
47
43
  request = a_request(:post, url).with(body: hash_including('Method' => 'getCategories'))
@@ -51,14 +47,14 @@ describe HasOffersV3::AffiliateOffer do
51
47
  end
52
48
 
53
49
  context 'when there is no id' do
54
- it 'should raise exception' do
50
+ it 'raises exception' do
55
51
  expect { subject.get_categories }.to raise_error ArgumentError
56
52
  end
57
53
  end
58
54
  end
59
55
 
60
- describe '.get_target_countries' do
61
- it 'should make a proper request call' do
56
+ describe '#get_target_countries' do
57
+ it 'makes a proper request call' do
62
58
  stub_call
63
59
  response = subject.get_target_countries ids: [1, 2]
64
60
  request = a_request(:post, url).with(body: hash_including('Method' => 'getTargetCountries'))
@@ -68,14 +64,14 @@ describe HasOffersV3::AffiliateOffer do
68
64
  end
69
65
 
70
66
  context 'when there is no id' do
71
- it 'should raise exception' do
67
+ it 'raises exception' do
72
68
  expect { subject.get_target_countries }.to raise_error ArgumentError
73
69
  end
74
70
  end
75
71
  end
76
72
 
77
- describe '.generate_tracking_link' do
78
- it 'should make a proper request call' do
73
+ describe '#generate_tracking_link' do
74
+ it 'makes a proper request call' do
79
75
  stub_call
80
76
  response = subject.generate_tracking_link offer_id: 1
81
77
  request = a_request(:post, url).with(body: hash_including('Method' => 'generateTrackingLink'))
@@ -85,14 +81,14 @@ describe HasOffersV3::AffiliateOffer do
85
81
  end
86
82
 
87
83
  context 'when there is no offer_id' do
88
- it 'should raise exception' do
84
+ it 'raises exception' do
89
85
  expect { subject.generate_tracking_link }.to raise_error ArgumentError
90
86
  end
91
87
  end
92
88
  end
93
89
 
94
- describe '.find_my_offers' do
95
- it 'should make a proper request call' do
90
+ describe '#find_my_offers' do
91
+ it 'makes a proper request call' do
96
92
  stub_call
97
93
  response = subject.find_my_offers
98
94
  request = a_request(:post, url).with(body: hash_including('Method' => 'findMyOffers'))
@@ -102,4 +98,14 @@ describe HasOffersV3::AffiliateOffer do
102
98
  end
103
99
  end
104
100
 
101
+ describe '#find_my_approved_ffers' do
102
+ it 'makes a proper request call' do
103
+ stub_call :get, nil, Regexp.new(url)
104
+ response = subject.find_my_approved_offers
105
+ expect(a_request(:get, url).with(query: hash_including({'Method' => 'findMyApprovedOffers'}))).to have_been_made
106
+
107
+ validate_call response
108
+ end
109
+ end
110
+
105
111
  end