hasoffersv3 0.4.1 → 0.5.0

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