go_transit 1.0.2 → 1.1.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 +4 -4
- data/lib/go_transit/client.rb +11 -3
- data/lib/go_transit/errors.rb +1 -0
- data/lib/go_transit/response.rb +15 -2
- data/lib/go_transit/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ee9e60a59caf970a1ede5d1f412722b2710f00265f9e3f24d6da081261f0b044
|
|
4
|
+
data.tar.gz: 8992c200e8f9a727c4d37cc96843d972f5c16c3df7c21782511fbee01f644869
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2e9bf26e3c22f7e28c3392e94e914c8c654b01b2ed9d8d42810b042ebff2daa01c115aa01ef23826b03b57eef4e7925b5cf73b12e79c8a2a3ad9b8a5711b94ae
|
|
7
|
+
data.tar.gz: d961631c8e1749670904195b61e4e7b5b44e1ed80e306873a34ecbb5b475c6eb51fc6165360524cf4fb151754caef2e0c2c642a2d66dbe56f8b0a803dcfd654f
|
data/lib/go_transit/client.rb
CHANGED
|
@@ -8,9 +8,17 @@ module GoTransit
|
|
|
8
8
|
def get(path)
|
|
9
9
|
uri = URI("#{GoTransit.base_url}/#{API_VERSION}/#{path}"\
|
|
10
10
|
"?key=#{GoTransit.api_key}")
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
http_response = Net::HTTP.get_response(uri)
|
|
12
|
+
Response.new(parse_body(http_response), http_response.code.to_i)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def parse_body(http_response)
|
|
18
|
+
JSON.parse(http_response.body)
|
|
19
|
+
rescue JSON::ParserError
|
|
20
|
+
{ "Metadata" => { "ErrorCode" => http_response.code,
|
|
21
|
+
"ErrorMessage" => http_response.message } }
|
|
14
22
|
end
|
|
15
23
|
end
|
|
16
24
|
end
|
data/lib/go_transit/errors.rb
CHANGED
data/lib/go_transit/response.rb
CHANGED
|
@@ -4,26 +4,39 @@ module GoTransit
|
|
|
4
4
|
|
|
5
5
|
delegate :code, :error_message, to: :metadata
|
|
6
6
|
|
|
7
|
-
def initialize(payload)
|
|
8
|
-
@
|
|
7
|
+
def initialize(payload, http_status = nil)
|
|
8
|
+
@http_status = http_status
|
|
9
|
+
@metadata = Metadata.new(payload.delete("Metadata") || fallback_metadata)
|
|
9
10
|
@data = payload_data(payload)
|
|
10
11
|
throw_error
|
|
11
12
|
end
|
|
12
13
|
|
|
13
14
|
private
|
|
14
15
|
|
|
16
|
+
attr_reader :http_status
|
|
17
|
+
|
|
18
|
+
def fallback_metadata
|
|
19
|
+
{ "ErrorCode" => http_status.to_s, "ErrorMessage" => "HTTP #{http_status}" }
|
|
20
|
+
end
|
|
21
|
+
|
|
15
22
|
def payload_data(payload)
|
|
16
23
|
return payload.values.first unless payload.values.first.kind_of?(Array)
|
|
17
24
|
payload
|
|
18
25
|
end
|
|
19
26
|
|
|
20
27
|
def throw_error
|
|
28
|
+
# A genuine transport-level 429 always wins, even if the JSON body
|
|
29
|
+
# (when there is one) claims success - GO Transit's own error
|
|
30
|
+
# convention embeds the real code in the body, but an upstream
|
|
31
|
+
# rate limiter returning 429 isn't guaranteed to follow that.
|
|
32
|
+
raise TooManyRequestsError.new(metadata) if http_status == 429
|
|
21
33
|
return if code == 200
|
|
22
34
|
raise NoContentError.new(metadata) if code == 204
|
|
23
35
|
raise BadRequestError.new(metadata) if code == 400
|
|
24
36
|
raise UnauthorizedError.new(metadata) if code == 401
|
|
25
37
|
raise ForbiddenError.new(metadata) if code == 403
|
|
26
38
|
raise NotFoundError.new(metadata) if code == 404
|
|
39
|
+
raise TooManyRequestsError.new(metadata) if code == 429
|
|
27
40
|
raise StandardError.new(metadata)
|
|
28
41
|
end
|
|
29
42
|
end
|
data/lib/go_transit/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: go_transit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Justin Mazur
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2026-09-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -112,16 +112,16 @@ dependencies:
|
|
|
112
112
|
name: simplecov
|
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
|
114
114
|
requirements:
|
|
115
|
-
- -
|
|
115
|
+
- - ">="
|
|
116
116
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '0
|
|
117
|
+
version: '0'
|
|
118
118
|
type: :development
|
|
119
119
|
prerelease: false
|
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
121
|
requirements:
|
|
122
|
-
- -
|
|
122
|
+
- - ">="
|
|
123
123
|
- !ruby/object:Gem::Version
|
|
124
|
-
version: '0
|
|
124
|
+
version: '0'
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: timecop
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|