seatsio 51.3.0 → 51.4.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
  SHA256:
3
- metadata.gz: 259479ce0b5dedb43a77f138479afe0c94655d9cf98334dbfda166a04c1a9c7c
4
- data.tar.gz: fb38d949ec1f70d7ad285d39a292ae7b69a231d2507070e6537a77ed66272ca5
3
+ metadata.gz: 56a644926444297963f2f3bf83f06766072cfaab7b6964e0e5e8e2e3eb22842d
4
+ data.tar.gz: 723050a281e26c7c44688d947d2b6cd7228e5849ac991c1f9d3e929cc2a375a7
5
5
  SHA512:
6
- metadata.gz: 1522b482341a027f009f046f4e9cdef2695a7b07d589ea9c244a09e26ea7674f6df9f7a05614d2134cb8f1fcf094b363dd21be484e96820696ee668ada532eca
7
- data.tar.gz: d8cdb4757f57c38b69374afa1837c0f553f8c87bc35f1d70c2068028757c660766df0184d1df9e9d90f00eafce17f9b9446fd4a76395ca4e54d6824837aa80f6
6
+ metadata.gz: 8ba324ca8a888103228ddbfa77c88f996e6bd0a72bf92cdfc8f40084d30999c1cd2b724b25c9b3245011ec22873ba250b45170c877c756772e1880359f36a417
7
+ data.tar.gz: 516680e34fef8abd807f9095e9b72f18ba74523be06ff123d43c572d63eca1547b2a4a5e21ba3c60f28cbaf52d41a3d09cea5594e37492f57ec9b8f7824033eb
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seatsio (51.3.0)
4
+ seatsio (51.4.0)
5
5
  rest-client (~> 2.0, >= 2.0.2)
6
6
 
7
7
  GEM
@@ -6,6 +6,9 @@ module Seatsio
6
6
  class RateLimitExceededException < SeatsioException
7
7
  end
8
8
 
9
+ class BestAvailableObjectsNotFoundException < SeatsioException
10
+ end
11
+
9
12
  class NoMorePagesException < SeatsioException
10
13
  end
11
14
 
@@ -49,11 +49,7 @@ module Seatsio
49
49
  rescue RestClient::NotFound => e
50
50
  raise Exception::NotFoundException.new(e.response)
51
51
  rescue RestClient::ExceptionWithResponse => e
52
- if e.response.code == 429
53
- raise Exception::RateLimitExceededException.new(e.response)
54
- else
55
- raise Exception::SeatsioException.new(e.response)
56
- end
52
+ handle_exception(e.response)
57
53
  rescue RestClient::Exceptions::Timeout
58
54
  raise Exception::SeatsioException.new("Timeout ERROR")
59
55
  rescue SocketError
@@ -94,5 +90,30 @@ module Seatsio
94
90
  def delete(endpoint, payload = {})
95
91
  execute(:delete, endpoint, payload)
96
92
  end
93
+
94
+ private
95
+
96
+ def handle_exception(response)
97
+ if response.code == 429
98
+ raise Exception::RateLimitExceededException.new(response)
99
+ end
100
+
101
+ content_type = response.headers[:content_type]
102
+ if content_type&.include?("application/json")
103
+ parsed_exception = JSON.parse(response.body, symbolize_names: true)
104
+ if best_available_objects_not_found?(parsed_exception[:errors])
105
+ raise Exception::BestAvailableObjectsNotFoundException.new(response)
106
+ else
107
+ raise Exception::SeatsioException.new(response)
108
+ end
109
+ else
110
+ raise Exception::SeatsioException.new(response)
111
+ end
112
+ end
113
+
114
+ def best_available_objects_not_found?(errors)
115
+ errors.any? { |error| error[:code] == "BEST_AVAILABLE_OBJECTS_NOT_FOUND" }
116
+ end
117
+
97
118
  end
98
119
  end
@@ -1,3 +1,3 @@
1
1
  module Seatsio
2
- VERSION = "51.3.0"
2
+ VERSION = "51.4.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seatsio
3
3
  version: !ruby/object:Gem::Version
4
- version: 51.3.0
4
+ version: 51.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seats.io