sale 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sale/base.rb +17 -8
  3. data/sale.gemspec +2 -2
  4. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4d3a677bb61cfa0802ba091302eac81313419d154288c92d7fc4777f6d8eac45
4
- data.tar.gz: e480347c0acd0c4c614117bb2cd9735d9a1cd67834d184fc45c222ef8dc3f30a
3
+ metadata.gz: 286c32be42c8062b6032857ff6632bc70347c86ceecafc708dcf3d3bdb68ecfa
4
+ data.tar.gz: 4befbf0cd425bdf8d64cb26d6fba9b48fabbbfbac82dd1096c3abaae7fc6b37b
5
5
  SHA512:
6
- metadata.gz: c1db560494d74856dc9190d8dc058cd6c6e72c24d4866123cba083a00685fb53ab572a84c5ef1dda52867ca4a48da2c0c85ff1f88a18ecb9b396e7fc9a8f85f0
7
- data.tar.gz: 0ba64f08387d786591f456388b9ca02089c2bb07d3b89fff2e12fc5f5fd4902d5ddba80554460b568939df35e433917202ded87bfd7b69151dd1b5b5775d23aa
6
+ metadata.gz: 83d8f4de3e47a6b7b55e8daf9821e1bbcd1a5206315427a20c392897b1a08e338c05c438aaaacdd13035ded7fa03f99d5d61c961a3b01034d769199ed49e089d
7
+ data.tar.gz: 1ea4c55ea1f6e84c08744d774c0505e25a1ade0784f80b9756cdf1f09109f1d8042edd842a77906d7579223911be3d1625559f725bc8276f22d6a41ba36ad4aa
data/lib/sale/base.rb CHANGED
@@ -4,6 +4,8 @@ require_relative './entity'
4
4
 
5
5
  module Bsale
6
6
  class InvalidResponseError < StandardError; end
7
+ class ClientError < InvalidResponseError; end
8
+ class ServerError < InvalidResponseError; end
7
9
 
8
10
  class APIBase
9
11
  ENDPOINT = 'https://api.bsale.cl'.freeze
@@ -39,17 +41,22 @@ module Bsale
39
41
  headers = { 'access_token' => @token }
40
42
  url = path['://'] ? path : [ ENDPOINT, VERSION, path ].join('/')
41
43
 
42
- if @http
43
- @http.request(method, url, body, { json: true, follow: 3, headers: headers })
44
+ resp = if @http
45
+ @http.request(method, url, body, { json: true, follow: 3, retries: 3, headers: headers })
44
46
  else
45
- Dagger.request(method, url, body, { json: true, follow: 3, headers: headers })
47
+ Dagger.request(method, url, body, { json: true, follow: 3, retries: 3, headers: headers })
46
48
  end
47
- rescue InvalidResponseError, Errno::ECONNREFUSED, Errno::ECONNRESET, Errno::ETIMEDOUT, Errno::EINVAL, Timeout::Error, \
48
- SocketError, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError, OpenSSL::SSL::SSLError => e
49
49
 
50
+ if resp.code > 500
51
+ raise ServerError.new("#{resp.code}: #{resp.body}")
52
+ else
53
+ resp
54
+ end
55
+
56
+ rescue ServerError => e
50
57
  raise if attempt > MAX_RETRIES
51
- puts "Connection refused. Retrying in a few secs... (attempt #{attempt})"
52
- sleep(attempt * 5) # 5 secs, 10 secs, 15 secs, 20 secs
58
+ puts "#{e.class}. Retrying in a few secs... (attempt #{attempt})"
59
+ sleep(attempt * 3) # 3 secs, 6 secs, 9 secs, 12 secs
53
60
  request(method, path, body, attempt + 1)
54
61
  end
55
62
 
@@ -68,8 +75,10 @@ module Bsale
68
75
  if resp.success?
69
76
  data = parse_json(resp.body)
70
77
  return data ? Entity.new(data, self, original_params) : nil
78
+ # elsif resp.code > 500
79
+ # raise ServerError.new("#{resp.code}: #{resp.body}")
71
80
  else
72
- raise InvalidResponseError.new("#{resp.code}: #{resp.body}")
81
+ raise ClientError.new("#{resp.code}: #{resp.body}")
73
82
  end
74
83
  end
75
84
 
data/sale.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'sale'
6
- s.version = '0.2.1'
6
+ s.version = '0.2.2'
7
7
  s.platform = Gem::Platform::RUBY
8
8
  s.authors = ['Tomás Pollak']
9
9
  s.email = ['tomas@bootic.net']
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.add_development_dependency "rspec-mocks"
18
18
  s.add_development_dependency "rspec-expectations"
19
19
 
20
- s.add_runtime_dependency "dagger", "~> 0.9.0"
20
+ s.add_runtime_dependency "dagger", "~> 1.3.1"
21
21
 
22
22
  s.files = `git ls-files`.split("\n")
23
23
  s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomás Pollak
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.9.0
75
+ version: 1.3.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.9.0
82
+ version: 1.3.1
83
83
  description: A wrapper around the Bsale API.
84
84
  email:
85
85
  - tomas@bootic.net