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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6262f10891f1126c5fec67abc7cc2de9105e81ca044831b8d4f9d08d0f0a526e
4
- data.tar.gz: 5dc020b9a27800684b045fd81a4378d53e0e9082084e524b0b43207017c91312
3
+ metadata.gz: 81703cc9f38a7f8d85444442242671b42af984bbb1c192b12c6be7c60ddb3b94
4
+ data.tar.gz: 2f1676cf664a872592322399f8db4ef24d9dab1ed4a4a16e5c68934fe27c8ba8
5
5
  SHA512:
6
- metadata.gz: 281714ec535cce0bbbca565b7afa9dd6536edb7960869f5018f73516321bc23db144ca86e874fdca6b8f3577fc895c5ca37d4fda09e4957bb1c1d30e0af97ab6
7
- data.tar.gz: f9980bc2450105d610a46ceecd81bb0d90d621f28a85696a1e5df89c85af3e42d0e707924e35a085f31788db9a1e992bcf733917b261492cd7cab286696bc5ce
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
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "onebusaway-sdk", "~> 1.0.26"
20
+ gem "onebusaway-sdk", "~> 1.1.0"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -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
- url: url,
128
- status: status,
129
- body: body,
130
- request: request,
131
- response: response,
132
- message: message
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}, Net::HTTPHeader]
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}, Net::HTTPHeader]
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: response)
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: response)
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(response, stream: stream, suppress_error: true)
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
- decoded = OnebusawaySDK::Internal::Util.decode_content(response, stream: stream)
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: response, page_data: decoded)
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}, Net::HTTPHeader]
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}, Net::HTTPHeader]
650
+ # @param headers [Hash{String=>String}]
651
651
  # @param stream [Enumerable<String>]
652
652
  # @param suppress_error [Boolean]
653
653
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OnebusawaySDK
4
- VERSION = "1.0.26"
4
+ VERSION = "1.1.0"
5
5
  end
@@ -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(url:, status:, body:, request:, response:, message: nil)
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(url:, status:, body:, request:, response:, message: nil)
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
- status: Integer,
90
- headers: T.any(T::Hash[String, String], Net::HTTPHeader)
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.any(T::Hash[String, String], Net::HTTPHeader)
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.any(T::Hash[String, String], Net::HTTPHeader),
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.any(T::Hash[String, String], Net::HTTPHeader),
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.26
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-08-25 00:00:00.000000000 Z
11
+ date: 2025-09-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool