onebusaway-sdk 1.0.26 → 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/CHANGELOG.md +8 -0
- data/README.md +1 -1
- data/lib/onebusaway_sdk/errors.rb +25 -11
- data/lib/onebusaway_sdk/internal/transport/base_client.rb +11 -7
- data/lib/onebusaway_sdk/internal/type/base_page.rb +1 -1
- data/lib/onebusaway_sdk/internal/util.rb +1 -1
- data/lib/onebusaway_sdk/version.rb +1 -1
- data/rbi/onebusaway_sdk/errors.rbi +29 -2
- data/rbi/onebusaway_sdk/internal/transport/base_client.rbi +4 -5
- data/rbi/onebusaway_sdk/internal/type/base_page.rbi +1 -1
- data/rbi/onebusaway_sdk/internal/util.rbi +1 -1
- data/sig/onebusaway_sdk/errors.rbs +7 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 81703cc9f38a7f8d85444442242671b42af984bbb1c192b12c6be7c60ddb3b94
|
4
|
+
data.tar.gz: 2f1676cf664a872592322399f8db4ef24d9dab1ed4a4a16e5c68934fe27c8ba8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba4e4a60e58466007ef416bbd15bbe6b35ee53394a8000be70d29c6e39c8b54810a685961fa2636b8b115ddb7fd256107656690f31d94f480dafdfc62ba3b94c
|
7
|
+
data.tar.gz: b7c41d6b86c849c1390adfe4b038df463c2698c2cc4c5b5b001a96fd71fafa7167683db05607738387b6326eebdb55cc9ac99f24bc97a89b7b3ff99e85c2f4d7
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.1.0 (2025-09-18)
|
4
|
+
|
5
|
+
Full Changelog: [v1.0.26...v1.1.0](https://github.com/OneBusAway/ruby-sdk/compare/v1.0.26...v1.1.0)
|
6
|
+
|
7
|
+
### Features
|
8
|
+
|
9
|
+
* expose response headers for both streams and errors ([f90702c](https://github.com/OneBusAway/ruby-sdk/commit/f90702cb380ac938d665758b110f7d89490db021))
|
10
|
+
|
3
11
|
## 1.0.26 (2025-08-25)
|
4
12
|
|
5
13
|
Full Changelog: [v1.0.25...v1.0.26](https://github.com/OneBusAway/ruby-sdk/compare/v1.0.25...v1.0.26)
|
data/README.md
CHANGED
@@ -40,6 +40,9 @@ module OnebusawaySDK
|
|
40
40
|
# @return [Integer, nil]
|
41
41
|
attr_accessor :status
|
42
42
|
|
43
|
+
# @return [Hash{String=>String}, nil]
|
44
|
+
attr_accessor :headers
|
45
|
+
|
43
46
|
# @return [Object, nil]
|
44
47
|
attr_accessor :body
|
45
48
|
|
@@ -47,13 +50,15 @@ module OnebusawaySDK
|
|
47
50
|
#
|
48
51
|
# @param url [URI::Generic]
|
49
52
|
# @param status [Integer, nil]
|
53
|
+
# @param headers [Hash{String=>String}, nil]
|
50
54
|
# @param body [Object, nil]
|
51
55
|
# @param request [nil]
|
52
56
|
# @param response [nil]
|
53
57
|
# @param message [String, nil]
|
54
|
-
def initialize(url:, status: nil, body: nil, request: nil, response: nil, message: nil)
|
58
|
+
def initialize(url:, status: nil, headers: nil, body: nil, request: nil, response: nil, message: nil)
|
55
59
|
@url = url
|
56
60
|
@status = status
|
61
|
+
@headers = headers
|
57
62
|
@body = body
|
58
63
|
@request = request
|
59
64
|
@response = response
|
@@ -74,6 +79,7 @@ module OnebusawaySDK
|
|
74
79
|
#
|
75
80
|
# @param url [URI::Generic]
|
76
81
|
# @param status [nil]
|
82
|
+
# @param headers [Hash{String=>String}, nil]
|
77
83
|
# @param body [nil]
|
78
84
|
# @param request [nil]
|
79
85
|
# @param response [nil]
|
@@ -81,6 +87,7 @@ module OnebusawaySDK
|
|
81
87
|
def initialize(
|
82
88
|
url:,
|
83
89
|
status: nil,
|
90
|
+
headers: nil,
|
84
91
|
body: nil,
|
85
92
|
request: nil,
|
86
93
|
response: nil,
|
@@ -95,6 +102,7 @@ module OnebusawaySDK
|
|
95
102
|
#
|
96
103
|
# @param url [URI::Generic]
|
97
104
|
# @param status [nil]
|
105
|
+
# @param headers [Hash{String=>String}, nil]
|
98
106
|
# @param body [nil]
|
99
107
|
# @param request [nil]
|
100
108
|
# @param response [nil]
|
@@ -102,6 +110,7 @@ module OnebusawaySDK
|
|
102
110
|
def initialize(
|
103
111
|
url:,
|
104
112
|
status: nil,
|
113
|
+
headers: nil,
|
105
114
|
body: nil,
|
106
115
|
request: nil,
|
107
116
|
response: nil,
|
@@ -116,21 +125,24 @@ module OnebusawaySDK
|
|
116
125
|
#
|
117
126
|
# @param url [URI::Generic]
|
118
127
|
# @param status [Integer]
|
128
|
+
# @param headers [Hash{String=>String}, nil]
|
119
129
|
# @param body [Object, nil]
|
120
130
|
# @param request [nil]
|
121
131
|
# @param response [nil]
|
122
132
|
# @param message [String, nil]
|
123
133
|
#
|
124
134
|
# @return [self]
|
125
|
-
def self.for(url:, status:, body:, request:, response:, message: nil)
|
126
|
-
kwargs =
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
135
|
+
def self.for(url:, status:, headers:, body:, request:, response:, message: nil)
|
136
|
+
kwargs =
|
137
|
+
{
|
138
|
+
url: url,
|
139
|
+
status: status,
|
140
|
+
headers: headers,
|
141
|
+
body: body,
|
142
|
+
request: request,
|
143
|
+
response: response,
|
144
|
+
message: message
|
145
|
+
}
|
134
146
|
|
135
147
|
case status
|
136
148
|
in 400
|
@@ -162,15 +174,17 @@ module OnebusawaySDK
|
|
162
174
|
#
|
163
175
|
# @param url [URI::Generic]
|
164
176
|
# @param status [Integer]
|
177
|
+
# @param headers [Hash{String=>String}, nil]
|
165
178
|
# @param body [Object, nil]
|
166
179
|
# @param request [nil]
|
167
180
|
# @param response [nil]
|
168
181
|
# @param message [String, nil]
|
169
|
-
def initialize(url:, status:, body:, request:, response:, message: nil)
|
182
|
+
def initialize(url:, status:, headers:, body:, request:, response:, message: nil)
|
170
183
|
message ||= {url: url.to_s, status: status, body: body}
|
171
184
|
super(
|
172
185
|
url: url,
|
173
186
|
status: status,
|
187
|
+
headers: headers,
|
174
188
|
body: body,
|
175
189
|
request: request,
|
176
190
|
response: response,
|
@@ -47,7 +47,7 @@ module OnebusawaySDK
|
|
47
47
|
# @api private
|
48
48
|
#
|
49
49
|
# @param status [Integer]
|
50
|
-
# @param headers [Hash{String=>String}
|
50
|
+
# @param headers [Hash{String=>String}]
|
51
51
|
#
|
52
52
|
# @return [Boolean]
|
53
53
|
def should_retry?(status, headers:)
|
@@ -85,7 +85,7 @@ module OnebusawaySDK
|
|
85
85
|
#
|
86
86
|
# @param status [Integer]
|
87
87
|
#
|
88
|
-
# @param response_headers [Hash{String=>String}
|
88
|
+
# @param response_headers [Hash{String=>String}]
|
89
89
|
#
|
90
90
|
# @return [Hash{Symbol=>Object}]
|
91
91
|
def follow_redirect(request, status:, response_headers:)
|
@@ -381,6 +381,7 @@ module OnebusawaySDK
|
|
381
381
|
rescue OnebusawaySDK::Errors::APIConnectionError => e
|
382
382
|
status = e
|
383
383
|
end
|
384
|
+
headers = OnebusawaySDK::Internal::Util.normalized_headers(response&.each_header&.to_h)
|
384
385
|
|
385
386
|
case status
|
386
387
|
in ..299
|
@@ -397,7 +398,7 @@ module OnebusawaySDK
|
|
397
398
|
in 300..399
|
398
399
|
self.class.reap_connection!(status, stream: stream)
|
399
400
|
|
400
|
-
request = self.class.follow_redirect(request, status: status, response_headers:
|
401
|
+
request = self.class.follow_redirect(request, status: status, response_headers: headers)
|
401
402
|
send_request(
|
402
403
|
request,
|
403
404
|
redirect_count: redirect_count + 1,
|
@@ -406,9 +407,9 @@ module OnebusawaySDK
|
|
406
407
|
)
|
407
408
|
in OnebusawaySDK::Errors::APIConnectionError if retry_count >= max_retries
|
408
409
|
raise status
|
409
|
-
in (400..) if retry_count >= max_retries || !self.class.should_retry?(status, headers:
|
410
|
+
in (400..) if retry_count >= max_retries || !self.class.should_retry?(status, headers: headers)
|
410
411
|
decoded = Kernel.then do
|
411
|
-
OnebusawaySDK::Internal::Util.decode_content(
|
412
|
+
OnebusawaySDK::Internal::Util.decode_content(headers, stream: stream, suppress_error: true)
|
412
413
|
ensure
|
413
414
|
self.class.reap_connection!(status, stream: stream)
|
414
415
|
end
|
@@ -416,6 +417,7 @@ module OnebusawaySDK
|
|
416
417
|
raise OnebusawaySDK::Errors::APIStatusError.for(
|
417
418
|
url: url,
|
418
419
|
status: status,
|
420
|
+
headers: headers,
|
419
421
|
body: decoded,
|
420
422
|
request: nil,
|
421
423
|
response: response
|
@@ -492,19 +494,21 @@ module OnebusawaySDK
|
|
492
494
|
send_retry_header: send_retry_header
|
493
495
|
)
|
494
496
|
|
495
|
-
|
497
|
+
headers = OnebusawaySDK::Internal::Util.normalized_headers(response.each_header.to_h)
|
498
|
+
decoded = OnebusawaySDK::Internal::Util.decode_content(headers, stream: stream)
|
496
499
|
case req
|
497
500
|
in {stream: Class => st}
|
498
501
|
st.new(
|
499
502
|
model: model,
|
500
503
|
url: url,
|
501
504
|
status: status,
|
505
|
+
headers: headers,
|
502
506
|
response: response,
|
503
507
|
unwrap: unwrap,
|
504
508
|
stream: decoded
|
505
509
|
)
|
506
510
|
in {page: Class => page}
|
507
|
-
page.new(client: self, req: req, headers:
|
511
|
+
page.new(client: self, req: req, headers: headers, page_data: decoded)
|
508
512
|
else
|
509
513
|
unwrapped = OnebusawaySDK::Internal::Util.dig(decoded, unwrap)
|
510
514
|
OnebusawaySDK::Internal::Type::Converter.coerce(model, unwrapped)
|
@@ -39,7 +39,7 @@ module OnebusawaySDK
|
|
39
39
|
#
|
40
40
|
# @param client [OnebusawaySDK::Internal::Transport::BaseClient]
|
41
41
|
# @param req [Hash{Symbol=>Object}]
|
42
|
-
# @param headers [Hash{String=>String}
|
42
|
+
# @param headers [Hash{String=>String}]
|
43
43
|
# @param page_data [Object]
|
44
44
|
def initialize(client:, req:, headers:, page_data:)
|
45
45
|
@client = client
|
@@ -647,7 +647,7 @@ module OnebusawaySDK
|
|
647
647
|
#
|
648
648
|
# Assumes each chunk in stream has `Encoding::BINARY`.
|
649
649
|
#
|
650
|
-
# @param headers [Hash{String=>String}
|
650
|
+
# @param headers [Hash{String=>String}]
|
651
651
|
# @param stream [Enumerable<String>]
|
652
652
|
# @param suppress_error [Boolean]
|
653
653
|
#
|
@@ -33,6 +33,9 @@ module OnebusawaySDK
|
|
33
33
|
sig { returns(T.nilable(Integer)) }
|
34
34
|
attr_accessor :status
|
35
35
|
|
36
|
+
sig { returns(T.nilable(T::Hash[String, String])) }
|
37
|
+
attr_accessor :headers
|
38
|
+
|
36
39
|
sig { returns(T.nilable(T.anything)) }
|
37
40
|
attr_accessor :body
|
38
41
|
|
@@ -41,6 +44,7 @@ module OnebusawaySDK
|
|
41
44
|
params(
|
42
45
|
url: URI::Generic,
|
43
46
|
status: T.nilable(Integer),
|
47
|
+
headers: T.nilable(T::Hash[String, String]),
|
44
48
|
body: T.nilable(Object),
|
45
49
|
request: NilClass,
|
46
50
|
response: NilClass,
|
@@ -50,6 +54,7 @@ module OnebusawaySDK
|
|
50
54
|
def self.new(
|
51
55
|
url:,
|
52
56
|
status: nil,
|
57
|
+
headers: nil,
|
53
58
|
body: nil,
|
54
59
|
request: nil,
|
55
60
|
response: nil,
|
@@ -70,6 +75,7 @@ module OnebusawaySDK
|
|
70
75
|
params(
|
71
76
|
url: URI::Generic,
|
72
77
|
status: NilClass,
|
78
|
+
headers: T.nilable(T::Hash[String, String]),
|
73
79
|
body: NilClass,
|
74
80
|
request: NilClass,
|
75
81
|
response: NilClass,
|
@@ -79,6 +85,7 @@ module OnebusawaySDK
|
|
79
85
|
def self.new(
|
80
86
|
url:,
|
81
87
|
status: nil,
|
88
|
+
headers: nil,
|
82
89
|
body: nil,
|
83
90
|
request: nil,
|
84
91
|
response: nil,
|
@@ -93,6 +100,7 @@ module OnebusawaySDK
|
|
93
100
|
params(
|
94
101
|
url: URI::Generic,
|
95
102
|
status: NilClass,
|
103
|
+
headers: T.nilable(T::Hash[String, String]),
|
96
104
|
body: NilClass,
|
97
105
|
request: NilClass,
|
98
106
|
response: NilClass,
|
@@ -102,6 +110,7 @@ module OnebusawaySDK
|
|
102
110
|
def self.new(
|
103
111
|
url:,
|
104
112
|
status: nil,
|
113
|
+
headers: nil,
|
105
114
|
body: nil,
|
106
115
|
request: nil,
|
107
116
|
response: nil,
|
@@ -116,13 +125,22 @@ module OnebusawaySDK
|
|
116
125
|
params(
|
117
126
|
url: URI::Generic,
|
118
127
|
status: Integer,
|
128
|
+
headers: T.nilable(T::Hash[String, String]),
|
119
129
|
body: T.nilable(Object),
|
120
130
|
request: NilClass,
|
121
131
|
response: NilClass,
|
122
132
|
message: T.nilable(String)
|
123
133
|
).returns(T.attached_class)
|
124
134
|
end
|
125
|
-
def self.for(
|
135
|
+
def self.for(
|
136
|
+
url:,
|
137
|
+
status:,
|
138
|
+
headers:,
|
139
|
+
body:,
|
140
|
+
request:,
|
141
|
+
response:,
|
142
|
+
message: nil
|
143
|
+
)
|
126
144
|
end
|
127
145
|
|
128
146
|
sig { returns(Integer) }
|
@@ -133,13 +151,22 @@ module OnebusawaySDK
|
|
133
151
|
params(
|
134
152
|
url: URI::Generic,
|
135
153
|
status: Integer,
|
154
|
+
headers: T.nilable(T::Hash[String, String]),
|
136
155
|
body: T.nilable(Object),
|
137
156
|
request: NilClass,
|
138
157
|
response: NilClass,
|
139
158
|
message: T.nilable(String)
|
140
159
|
).returns(T.attached_class)
|
141
160
|
end
|
142
|
-
def self.new(
|
161
|
+
def self.new(
|
162
|
+
url:,
|
163
|
+
status:,
|
164
|
+
headers:,
|
165
|
+
body:,
|
166
|
+
request:,
|
167
|
+
response:,
|
168
|
+
message: nil
|
169
|
+
)
|
143
170
|
end
|
144
171
|
end
|
145
172
|
|
@@ -85,10 +85,9 @@ module OnebusawaySDK
|
|
85
85
|
|
86
86
|
# @api private
|
87
87
|
sig do
|
88
|
-
params(
|
89
|
-
|
90
|
-
|
91
|
-
).returns(T::Boolean)
|
88
|
+
params(status: Integer, headers: T::Hash[String, String]).returns(
|
89
|
+
T::Boolean
|
90
|
+
)
|
92
91
|
end
|
93
92
|
def should_retry?(status, headers:)
|
94
93
|
end
|
@@ -99,7 +98,7 @@ module OnebusawaySDK
|
|
99
98
|
request:
|
100
99
|
OnebusawaySDK::Internal::Transport::BaseClient::RequestInput,
|
101
100
|
status: Integer,
|
102
|
-
response_headers: T
|
101
|
+
response_headers: T::Hash[String, String]
|
103
102
|
).returns(
|
104
103
|
OnebusawaySDK::Internal::Transport::BaseClient::RequestInput
|
105
104
|
)
|
@@ -31,7 +31,7 @@ module OnebusawaySDK
|
|
31
31
|
client: OnebusawaySDK::Internal::Transport::BaseClient,
|
32
32
|
req:
|
33
33
|
OnebusawaySDK::Internal::Transport::BaseClient::RequestComponents,
|
34
|
-
headers: T
|
34
|
+
headers: T::Hash[String, String],
|
35
35
|
page_data: T.anything
|
36
36
|
).void
|
37
37
|
end
|
@@ -361,7 +361,7 @@ module OnebusawaySDK
|
|
361
361
|
# Assumes each chunk in stream has `Encoding::BINARY`.
|
362
362
|
sig do
|
363
363
|
params(
|
364
|
-
headers: T
|
364
|
+
headers: T::Hash[String, String],
|
365
365
|
stream: T::Enumerable[String],
|
366
366
|
suppress_error: T::Boolean
|
367
367
|
).returns(T.anything)
|
@@ -21,11 +21,14 @@ module OnebusawaySDK
|
|
21
21
|
|
22
22
|
attr_accessor status: Integer?
|
23
23
|
|
24
|
+
attr_accessor headers: ::Hash[String, String]?
|
25
|
+
|
24
26
|
attr_accessor body: top?
|
25
27
|
|
26
28
|
def initialize: (
|
27
29
|
url: URI::Generic,
|
28
30
|
?status: Integer?,
|
31
|
+
?headers: ::Hash[String, String]?,
|
29
32
|
?body: Object?,
|
30
33
|
?request: nil,
|
31
34
|
?response: nil,
|
@@ -37,6 +40,7 @@ module OnebusawaySDK
|
|
37
40
|
def initialize: (
|
38
41
|
url: URI::Generic,
|
39
42
|
?status: nil,
|
43
|
+
?headers: ::Hash[String, String]?,
|
40
44
|
?body: nil,
|
41
45
|
?request: nil,
|
42
46
|
?response: nil,
|
@@ -48,6 +52,7 @@ module OnebusawaySDK
|
|
48
52
|
def initialize: (
|
49
53
|
url: URI::Generic,
|
50
54
|
?status: nil,
|
55
|
+
?headers: ::Hash[String, String]?,
|
51
56
|
?body: nil,
|
52
57
|
?request: nil,
|
53
58
|
?response: nil,
|
@@ -59,6 +64,7 @@ module OnebusawaySDK
|
|
59
64
|
def self.for: (
|
60
65
|
url: URI::Generic,
|
61
66
|
status: Integer,
|
67
|
+
headers: ::Hash[String, String]?,
|
62
68
|
body: Object?,
|
63
69
|
request: nil,
|
64
70
|
response: nil,
|
@@ -68,6 +74,7 @@ module OnebusawaySDK
|
|
68
74
|
def initialize: (
|
69
75
|
url: URI::Generic,
|
70
76
|
status: Integer,
|
77
|
+
headers: ::Hash[String, String]?,
|
71
78
|
body: Object?,
|
72
79
|
request: nil,
|
73
80
|
response: nil,
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: onebusaway-sdk
|
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
|
- Onebusaway SDK
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|