sale 0.2.1 → 0.2.2

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