seatsio 51.3.0 → 51.4.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
  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