onebusaway-sdk 0.1.0.pre.alpha.206 → 0.1.0.pre.alpha.207

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.
Files changed (150) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +32 -20
  3. data/lib/onebusaway-sdk/base_client.rb +41 -49
  4. data/lib/onebusaway-sdk/base_model.rb +489 -514
  5. data/lib/onebusaway-sdk/base_page.rb +35 -15
  6. data/lib/onebusaway-sdk/client.rb +1 -3
  7. data/lib/onebusaway-sdk/errors.rb +12 -17
  8. data/lib/onebusaway-sdk/extern.rb +1 -4
  9. data/lib/onebusaway-sdk/models/references.rb +0 -21
  10. data/lib/onebusaway-sdk/models/report_problem_with_stop_retrieve_params.rb +0 -21
  11. data/lib/onebusaway-sdk/models/report_problem_with_trip_retrieve_params.rb +0 -23
  12. data/lib/onebusaway-sdk/pooled_net_requester.rb +40 -46
  13. data/lib/onebusaway-sdk/request_options.rb +4 -11
  14. data/lib/onebusaway-sdk/resources/agencies_with_coverage.rb +0 -2
  15. data/lib/onebusaway-sdk/resources/agency.rb +0 -2
  16. data/lib/onebusaway-sdk/resources/arrival_and_departure.rb +0 -3
  17. data/lib/onebusaway-sdk/resources/block.rb +0 -2
  18. data/lib/onebusaway-sdk/resources/config.rb +0 -2
  19. data/lib/onebusaway-sdk/resources/current_time.rb +0 -2
  20. data/lib/onebusaway-sdk/resources/report_problem_with_stop.rb +0 -2
  21. data/lib/onebusaway-sdk/resources/report_problem_with_trip.rb +0 -2
  22. data/lib/onebusaway-sdk/resources/route.rb +0 -2
  23. data/lib/onebusaway-sdk/resources/route_ids_for_agency.rb +0 -2
  24. data/lib/onebusaway-sdk/resources/routes_for_agency.rb +0 -2
  25. data/lib/onebusaway-sdk/resources/routes_for_location.rb +0 -2
  26. data/lib/onebusaway-sdk/resources/schedule_for_route.rb +0 -2
  27. data/lib/onebusaway-sdk/resources/schedule_for_stop.rb +0 -2
  28. data/lib/onebusaway-sdk/resources/search_for_route.rb +0 -2
  29. data/lib/onebusaway-sdk/resources/search_for_stop.rb +0 -2
  30. data/lib/onebusaway-sdk/resources/shape.rb +0 -2
  31. data/lib/onebusaway-sdk/resources/stop.rb +0 -2
  32. data/lib/onebusaway-sdk/resources/stop_ids_for_agency.rb +0 -2
  33. data/lib/onebusaway-sdk/resources/stops_for_agency.rb +0 -2
  34. data/lib/onebusaway-sdk/resources/stops_for_location.rb +0 -2
  35. data/lib/onebusaway-sdk/resources/stops_for_route.rb +0 -2
  36. data/lib/onebusaway-sdk/resources/trip.rb +0 -2
  37. data/lib/onebusaway-sdk/resources/trip_details.rb +0 -2
  38. data/lib/onebusaway-sdk/resources/trip_for_vehicle.rb +0 -2
  39. data/lib/onebusaway-sdk/resources/trips_for_location.rb +0 -2
  40. data/lib/onebusaway-sdk/resources/trips_for_route.rb +0 -2
  41. data/lib/onebusaway-sdk/resources/vehicles_for_agency.rb +0 -2
  42. data/lib/onebusaway-sdk/util.rb +201 -118
  43. data/lib/onebusaway-sdk/version.rb +1 -1
  44. data/lib/onebusaway-sdk.rb +1 -0
  45. data/manifest.yaml +1 -0
  46. data/rbi/lib/onebusaway-sdk/base_client.rbi +46 -21
  47. data/rbi/lib/onebusaway-sdk/base_model.rbi +400 -256
  48. data/rbi/lib/onebusaway-sdk/base_page.rbi +3 -4
  49. data/rbi/lib/onebusaway-sdk/client.rbi +7 -2
  50. data/rbi/lib/onebusaway-sdk/errors.rbi +41 -8
  51. data/rbi/lib/onebusaway-sdk/extern.rbi +1 -1
  52. data/rbi/lib/onebusaway-sdk/models/agencies_with_coverage_list_params.rbi +5 -2
  53. data/rbi/lib/onebusaway-sdk/models/agencies_with_coverage_list_response.rbi +9 -6
  54. data/rbi/lib/onebusaway-sdk/models/agency_retrieve_params.rbi +5 -2
  55. data/rbi/lib/onebusaway-sdk/models/agency_retrieve_response.rbi +6 -6
  56. data/rbi/lib/onebusaway-sdk/models/arrival_and_departure_list_params.rbi +5 -2
  57. data/rbi/lib/onebusaway-sdk/models/arrival_and_departure_list_response.rbi +95 -14
  58. data/rbi/lib/onebusaway-sdk/models/arrival_and_departure_retrieve_params.rbi +2 -9
  59. data/rbi/lib/onebusaway-sdk/models/arrival_and_departure_retrieve_response.rbi +93 -12
  60. data/rbi/lib/onebusaway-sdk/models/block_retrieve_params.rbi +5 -2
  61. data/rbi/lib/onebusaway-sdk/models/block_retrieve_response.rbi +14 -20
  62. data/rbi/lib/onebusaway-sdk/models/config_retrieve_params.rbi +5 -2
  63. data/rbi/lib/onebusaway-sdk/models/config_retrieve_response.rbi +8 -14
  64. data/rbi/lib/onebusaway-sdk/models/current_time_retrieve_params.rbi +5 -2
  65. data/rbi/lib/onebusaway-sdk/models/current_time_retrieve_response.rbi +6 -6
  66. data/rbi/lib/onebusaway-sdk/models/references.rbi +60 -43
  67. data/rbi/lib/onebusaway-sdk/models/report_problem_with_stop_retrieve_params.rbi +10 -6
  68. data/rbi/lib/onebusaway-sdk/models/report_problem_with_trip_retrieve_params.rbi +15 -6
  69. data/rbi/lib/onebusaway-sdk/models/response_wrapper.rbi +4 -2
  70. data/rbi/lib/onebusaway-sdk/models/route_ids_for_agency_list_params.rbi +5 -2
  71. data/rbi/lib/onebusaway-sdk/models/route_ids_for_agency_list_response.rbi +4 -4
  72. data/rbi/lib/onebusaway-sdk/models/route_retrieve_params.rbi +5 -2
  73. data/rbi/lib/onebusaway-sdk/models/route_retrieve_response.rbi +6 -6
  74. data/rbi/lib/onebusaway-sdk/models/routes_for_agency_list_params.rbi +5 -2
  75. data/rbi/lib/onebusaway-sdk/models/routes_for_agency_list_response.rbi +6 -6
  76. data/rbi/lib/onebusaway-sdk/models/routes_for_location_list_params.rbi +2 -2
  77. data/rbi/lib/onebusaway-sdk/models/routes_for_location_list_response.rbi +6 -6
  78. data/rbi/lib/onebusaway-sdk/models/schedule_for_route_retrieve_params.rbi +5 -8
  79. data/rbi/lib/onebusaway-sdk/models/schedule_for_route_retrieve_response.rbi +19 -16
  80. data/rbi/lib/onebusaway-sdk/models/schedule_for_stop_retrieve_params.rbi +5 -8
  81. data/rbi/lib/onebusaway-sdk/models/schedule_for_stop_retrieve_response.rbi +14 -14
  82. data/rbi/lib/onebusaway-sdk/models/search_for_route_list_params.rbi +4 -2
  83. data/rbi/lib/onebusaway-sdk/models/search_for_route_list_response.rbi +6 -6
  84. data/rbi/lib/onebusaway-sdk/models/search_for_stop_list_params.rbi +4 -2
  85. data/rbi/lib/onebusaway-sdk/models/search_for_stop_list_response.rbi +6 -6
  86. data/rbi/lib/onebusaway-sdk/models/shape_retrieve_params.rbi +5 -2
  87. data/rbi/lib/onebusaway-sdk/models/shape_retrieve_response.rbi +7 -6
  88. data/rbi/lib/onebusaway-sdk/models/stop_ids_for_agency_list_params.rbi +5 -2
  89. data/rbi/lib/onebusaway-sdk/models/stop_ids_for_agency_list_response.rbi +4 -4
  90. data/rbi/lib/onebusaway-sdk/models/stop_retrieve_params.rbi +5 -2
  91. data/rbi/lib/onebusaway-sdk/models/stop_retrieve_response.rbi +6 -6
  92. data/rbi/lib/onebusaway-sdk/models/stops_for_agency_list_params.rbi +5 -2
  93. data/rbi/lib/onebusaway-sdk/models/stops_for_agency_list_response.rbi +4 -4
  94. data/rbi/lib/onebusaway-sdk/models/stops_for_location_list_params.rbi +6 -2
  95. data/rbi/lib/onebusaway-sdk/models/stops_for_location_list_response.rbi +6 -6
  96. data/rbi/lib/onebusaway-sdk/models/stops_for_route_list_params.rbi +4 -2
  97. data/rbi/lib/onebusaway-sdk/models/stops_for_route_list_response.rbi +14 -14
  98. data/rbi/lib/onebusaway-sdk/models/trip_detail_retrieve_params.rbi +10 -2
  99. data/rbi/lib/onebusaway-sdk/models/trip_detail_retrieve_response.rbi +54 -23
  100. data/rbi/lib/onebusaway-sdk/models/trip_for_vehicle_retrieve_params.rbi +9 -8
  101. data/rbi/lib/onebusaway-sdk/models/trip_for_vehicle_retrieve_response.rbi +54 -23
  102. data/rbi/lib/onebusaway-sdk/models/trip_retrieve_params.rbi +5 -2
  103. data/rbi/lib/onebusaway-sdk/models/trip_retrieve_response.rbi +6 -6
  104. data/rbi/lib/onebusaway-sdk/models/trips_for_location_list_params.rbi +12 -12
  105. data/rbi/lib/onebusaway-sdk/models/trips_for_location_list_response.rbi +56 -16
  106. data/rbi/lib/onebusaway-sdk/models/trips_for_route_list_params.rbi +6 -2
  107. data/rbi/lib/onebusaway-sdk/models/trips_for_route_list_response.rbi +54 -16
  108. data/rbi/lib/onebusaway-sdk/models/vehicles_for_agency_list_params.rbi +3 -2
  109. data/rbi/lib/onebusaway-sdk/models/vehicles_for_agency_list_response.rbi +52 -14
  110. data/rbi/lib/onebusaway-sdk/pooled_net_requester.rbi +28 -13
  111. data/rbi/lib/onebusaway-sdk/request_options.rbi +25 -2
  112. data/rbi/lib/onebusaway-sdk/resources/agencies_with_coverage.rbi +4 -2
  113. data/rbi/lib/onebusaway-sdk/resources/agency.rbi +8 -3
  114. data/rbi/lib/onebusaway-sdk/resources/arrival_and_departure.rbi +14 -3
  115. data/rbi/lib/onebusaway-sdk/resources/block.rbi +8 -3
  116. data/rbi/lib/onebusaway-sdk/resources/config.rbi +3 -2
  117. data/rbi/lib/onebusaway-sdk/resources/current_time.rbi +3 -2
  118. data/rbi/lib/onebusaway-sdk/resources/report_problem_with_stop.rbi +9 -2
  119. data/rbi/lib/onebusaway-sdk/resources/report_problem_with_trip.rbi +14 -2
  120. data/rbi/lib/onebusaway-sdk/resources/route.rbi +8 -3
  121. data/rbi/lib/onebusaway-sdk/resources/route_ids_for_agency.rbi +8 -3
  122. data/rbi/lib/onebusaway-sdk/resources/routes_for_agency.rbi +8 -3
  123. data/rbi/lib/onebusaway-sdk/resources/routes_for_location.rbi +3 -2
  124. data/rbi/lib/onebusaway-sdk/resources/schedule_for_route.rbi +11 -3
  125. data/rbi/lib/onebusaway-sdk/resources/schedule_for_stop.rbi +11 -3
  126. data/rbi/lib/onebusaway-sdk/resources/search_for_route.rbi +10 -3
  127. data/rbi/lib/onebusaway-sdk/resources/search_for_stop.rbi +10 -3
  128. data/rbi/lib/onebusaway-sdk/resources/shape.rbi +8 -3
  129. data/rbi/lib/onebusaway-sdk/resources/stop.rbi +8 -3
  130. data/rbi/lib/onebusaway-sdk/resources/stop_ids_for_agency.rbi +8 -3
  131. data/rbi/lib/onebusaway-sdk/resources/stops_for_agency.rbi +8 -3
  132. data/rbi/lib/onebusaway-sdk/resources/stops_for_location.rbi +16 -3
  133. data/rbi/lib/onebusaway-sdk/resources/stops_for_route.rbi +12 -3
  134. data/rbi/lib/onebusaway-sdk/resources/trip.rbi +8 -3
  135. data/rbi/lib/onebusaway-sdk/resources/trip_details.rbi +12 -2
  136. data/rbi/lib/onebusaway-sdk/resources/trip_for_vehicle.rbi +11 -2
  137. data/rbi/lib/onebusaway-sdk/resources/trips_for_location.rbi +12 -2
  138. data/rbi/lib/onebusaway-sdk/resources/trips_for_route.rbi +15 -3
  139. data/rbi/lib/onebusaway-sdk/resources/vehicles_for_agency.rbi +10 -3
  140. data/rbi/lib/onebusaway-sdk/util.rbi +207 -105
  141. data/rbi/lib/onebusaway-sdk/version.rbi +1 -1
  142. data/sig/onebusaway-sdk/base_client.rbs +6 -1
  143. data/sig/onebusaway-sdk/base_model.rbs +8 -6
  144. data/sig/onebusaway-sdk/base_page.rbs +1 -1
  145. data/sig/onebusaway-sdk/errors.rbs +4 -4
  146. data/sig/onebusaway-sdk/pooled_net_requester.rbs +11 -4
  147. data/sig/onebusaway-sdk/request_options.rbs +4 -0
  148. data/sig/onebusaway-sdk/util.rbs +33 -8
  149. data/sig/onebusaway-sdk/version.rbs +1 -1
  150. metadata +4 -4
@@ -1,40 +1,60 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OnebusawaySDK
4
- # @private
4
+ # @example
5
+ # ```ruby
6
+ # if page.has_next?
7
+ # page = page.next_page
8
+ # end
9
+ # ```
5
10
  #
6
- # @abstract
11
+ # @example
12
+ # ```ruby
13
+ # page.auto_paging_each do |agencies_with_coverage|
14
+ # puts(agencies_with_coverage)
15
+ # end
16
+ # ```
7
17
  #
18
+ # @example
19
+ # ```ruby
20
+ # agencies_with_coverages = page
21
+ # .to_enum
22
+ # .lazy
23
+ # .select { _1.object_id.even? }
24
+ # .map(&:itself)
25
+ # .take(2)
26
+ # .to_a
27
+ #
28
+ # agencies_with_coverages => Array
29
+ # ```
8
30
  module BasePage
9
31
  # @return [Boolean]
10
- #
11
32
  def next_page? = (raise NotImplementedError)
12
33
 
13
34
  # @raise [OnebusawaySDK::APIError]
14
35
  # @return [OnebusawaySDK::BasePage]
15
- #
16
36
  def next_page = (raise NotImplementedError)
17
37
 
18
38
  # @param blk [Proc]
19
39
  #
20
40
  # @return [void]
21
- #
22
41
  def auto_paging_each(&) = (raise NotImplementedError)
23
42
 
24
43
  # @return [Enumerable]
25
- #
26
44
  def to_enum = super(:auto_paging_each)
27
45
 
28
46
  alias_method :enum_for, :to_enum
29
47
 
30
- # @!parse
31
- # # @private
32
- # #
33
- # # @param client [OnebusawaySDK::BaseClient]
34
- # # @param req [Hash{Symbol=>Object}]
35
- # # @param headers [Hash{String=>String}, Net::HTTPHeader]
36
- # # @param unwrapped [Object]
37
- # #
38
- # def initialize(client:, req:, headers:, unwrapped:); end
48
+ # @api private
49
+ #
50
+ # @param client [OnebusawaySDK::BaseClient]
51
+ # @param req [Hash{Symbol=>Object}]
52
+ # @param headers [Hash{String=>String}, Net::HTTPHeader]
53
+ # @param page_data [Object]
54
+ def initialize(client:, req:, headers:, page_data:)
55
+ @client = client
56
+ @req = req
57
+ super()
58
+ end
39
59
  end
40
60
  end
@@ -102,10 +102,9 @@ module OnebusawaySDK
102
102
  # @return [OnebusawaySDK::Resources::Shape]
103
103
  attr_reader :shape
104
104
 
105
- # @private
105
+ # @api private
106
106
  #
107
107
  # @return [Hash{String=>String}]
108
- #
109
108
  private def auth_query
110
109
  {"key" => @api_key}
111
110
  end
@@ -123,7 +122,6 @@ module OnebusawaySDK
123
122
  # @param initial_retry_delay [Float]
124
123
  #
125
124
  # @param max_retry_delay [Float]
126
- #
127
125
  def initialize(
128
126
  base_url: nil,
129
127
  api_key: ENV["ONEBUSAWAY_API_KEY"],
@@ -4,7 +4,7 @@ module OnebusawaySDK
4
4
  class Error < StandardError
5
5
  # @!parse
6
6
  # # @return [StandardError, nil]
7
- # attr_reader :cause
7
+ # attr_accessor :cause
8
8
  end
9
9
 
10
10
  class ConversionError < OnebusawaySDK::Error
@@ -12,15 +12,15 @@ module OnebusawaySDK
12
12
 
13
13
  class APIError < OnebusawaySDK::Error
14
14
  # @return [URI::Generic]
15
- attr_reader :url
15
+ attr_accessor :url
16
16
 
17
17
  # @return [Integer, nil]
18
- attr_reader :status
18
+ attr_accessor :status
19
19
 
20
20
  # @return [Object, nil]
21
- attr_reader :body
21
+ attr_accessor :body
22
22
 
23
- # @private
23
+ # @api private
24
24
  #
25
25
  # @param url [URI::Generic]
26
26
  # @param status [Integer, nil]
@@ -28,7 +28,6 @@ module OnebusawaySDK
28
28
  # @param request [nil]
29
29
  # @param response [nil]
30
30
  # @param message [String, nil]
31
- #
32
31
  def initialize(url:, status: nil, body: nil, request: nil, response: nil, message: nil)
33
32
  @url = url
34
33
  @status = status
@@ -42,13 +41,13 @@ module OnebusawaySDK
42
41
  class APIConnectionError < OnebusawaySDK::APIError
43
42
  # @!parse
44
43
  # # @return [nil]
45
- # attr_reader :status
44
+ # attr_accessor :status
46
45
 
47
46
  # @!parse
48
47
  # # @return [nil]
49
- # attr_reader :body
48
+ # attr_accessor :body
50
49
 
51
- # @private
50
+ # @api private
52
51
  #
53
52
  # @param url [URI::Generic]
54
53
  # @param status [nil]
@@ -56,7 +55,6 @@ module OnebusawaySDK
56
55
  # @param request [nil]
57
56
  # @param response [nil]
58
57
  # @param message [String, nil]
59
- #
60
58
  def initialize(
61
59
  url:,
62
60
  status: nil,
@@ -70,7 +68,7 @@ module OnebusawaySDK
70
68
  end
71
69
 
72
70
  class APITimeoutError < OnebusawaySDK::APIConnectionError
73
- # @private
71
+ # @api private
74
72
  #
75
73
  # @param url [URI::Generic]
76
74
  # @param status [nil]
@@ -78,7 +76,6 @@ module OnebusawaySDK
78
76
  # @param request [nil]
79
77
  # @param response [nil]
80
78
  # @param message [String, nil]
81
- #
82
79
  def initialize(
83
80
  url:,
84
81
  status: nil,
@@ -92,7 +89,7 @@ module OnebusawaySDK
92
89
  end
93
90
 
94
91
  class APIStatusError < OnebusawaySDK::APIError
95
- # @private
92
+ # @api private
96
93
  #
97
94
  # @param url [URI::Generic]
98
95
  # @param status [Integer]
@@ -102,7 +99,6 @@ module OnebusawaySDK
102
99
  # @param message [String, nil]
103
100
  #
104
101
  # @return [OnebusawaySDK::APIStatusError]
105
- #
106
102
  def self.for(url:, status:, body:, request:, response:, message: nil)
107
103
  kwargs = {url: url, status: status, body: body, request: request, response: response, message: message}
108
104
 
@@ -130,9 +126,9 @@ module OnebusawaySDK
130
126
 
131
127
  # @!parse
132
128
  # # @return [Integer]
133
- # attr_reader :status
129
+ # attr_accessor :status
134
130
 
135
- # @private
131
+ # @api private
136
132
  #
137
133
  # @param url [URI::Generic]
138
134
  # @param status [Integer]
@@ -140,7 +136,6 @@ module OnebusawaySDK
140
136
  # @param request [nil]
141
137
  # @param response [nil]
142
138
  # @param message [String, nil]
143
- #
144
139
  def initialize(url:, status:, body:, request:, response:, message: nil)
145
140
  message ||= {url: url.to_s, status: status, body: body}
146
141
  super(
@@ -1,10 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OnebusawaySDK
4
- # @private
5
- #
6
- # @abstract
7
- #
4
+ # @api private
8
5
  module Extern
9
6
  end
10
7
  end
@@ -671,22 +671,6 @@ module OnebusawaySDK
671
671
  # @abstract
672
672
  #
673
673
  # Reason for the service alert, taken from TPEG codes.
674
- #
675
- # @example
676
- # ```ruby
677
- # case reason
678
- # in :equipmentReason
679
- # # ...
680
- # in :environmentReason
681
- # # ...
682
- # in :personnelReason
683
- # # ...
684
- # in :miscellaneousReason
685
- # # ...
686
- # in :securityAlert
687
- # # ...
688
- # end
689
- # ```
690
674
  class Reason < OnebusawaySDK::Enum
691
675
  EQUIPMENT_REASON = :equipmentReason
692
676
  ENVIRONMENT_REASON = :environmentReason
@@ -695,11 +679,6 @@ module OnebusawaySDK
695
679
  SECURITY_ALERT = :securityAlert
696
680
 
697
681
  finalize!
698
-
699
- # @!parse
700
- # # @return [Array<Symbol>]
701
- # #
702
- # def self.values; end
703
682
  end
704
683
 
705
684
  class Summary < OnebusawaySDK::BaseModel
@@ -82,22 +82,6 @@ module OnebusawaySDK
82
82
  # @abstract
83
83
  #
84
84
  # A string code identifying the nature of the problem
85
- #
86
- # @example
87
- # ```ruby
88
- # case code
89
- # in :stop_name_wrong
90
- # # ...
91
- # in :stop_number_wrong
92
- # # ...
93
- # in :stop_location_wrong
94
- # # ...
95
- # in :route_or_trip_missing
96
- # # ...
97
- # in :other
98
- # # ...
99
- # end
100
- # ```
101
85
  class Code < OnebusawaySDK::Enum
102
86
  STOP_NAME_WRONG = :stop_name_wrong
103
87
  STOP_NUMBER_WRONG = :stop_number_wrong
@@ -106,11 +90,6 @@ module OnebusawaySDK
106
90
  OTHER = :other
107
91
 
108
92
  finalize!
109
-
110
- # @!parse
111
- # # @return [Array<Symbol>]
112
- # #
113
- # def self.values; end
114
93
  end
115
94
  end
116
95
  end
@@ -142,24 +142,6 @@ module OnebusawaySDK
142
142
  # @abstract
143
143
  #
144
144
  # A string code identifying the nature of the problem
145
- #
146
- # @example
147
- # ```ruby
148
- # case code
149
- # in :vehicle_never_came
150
- # # ...
151
- # in :vehicle_came_early
152
- # # ...
153
- # in :vehicle_came_late
154
- # # ...
155
- # in :wrong_headsign
156
- # # ...
157
- # in :vehicle_does_not_stop_here
158
- # # ...
159
- # in ...
160
- # #...
161
- # end
162
- # ```
163
145
  class Code < OnebusawaySDK::Enum
164
146
  VEHICLE_NEVER_CAME = :vehicle_never_came
165
147
  VEHICLE_CAME_EARLY = :vehicle_came_early
@@ -169,11 +151,6 @@ module OnebusawaySDK
169
151
  OTHER = :other
170
152
 
171
153
  finalize!
172
-
173
- # @!parse
174
- # # @return [Array<Symbol>]
175
- # #
176
- # def self.values; end
177
154
  end
178
155
  end
179
156
  end
@@ -1,16 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OnebusawaySDK
4
- # @private
5
- #
4
+ # @api private
6
5
  class PooledNetRequester
7
6
  class << self
8
- # @private
7
+ # @api private
9
8
  #
10
9
  # @param url [URI::Generic]
11
10
  #
12
11
  # @return [Net::HTTP]
13
- #
14
12
  def connect(url)
15
13
  port =
16
14
  case [url.port, url.scheme]
@@ -28,17 +26,16 @@ module OnebusawaySDK
28
26
  end
29
27
  end
30
28
 
31
- # @private
29
+ # @api private
32
30
  #
33
31
  # @param conn [Net::HTTP]
34
32
  # @param deadline [Float]
35
- #
36
33
  def calibrate_socket_timeout(conn, deadline)
37
34
  timeout = deadline - OnebusawaySDK::Util.monotonic_secs
38
35
  conn.open_timeout = conn.read_timeout = conn.write_timeout = conn.continue_timeout = timeout
39
36
  end
40
37
 
41
- # @private
38
+ # @api private
42
39
  #
43
40
  # @param request [Hash{Symbol=>Object}] .
44
41
  #
@@ -48,9 +45,10 @@ module OnebusawaySDK
48
45
  #
49
46
  # @option request [Hash{String=>String}] :headers
50
47
  #
51
- # @return [Net::HTTPGenericRequest]
48
+ # @param blk [Proc]
52
49
  #
53
- def build_request(request)
50
+ # @return [Net::HTTPGenericRequest]
51
+ def build_request(request, &)
54
52
  method, url, headers, body = request.fetch_values(:method, :url, :headers, :body)
55
53
  req = Net::HTTPGenericRequest.new(
56
54
  method.to_s.upcase,
@@ -63,54 +61,41 @@ module OnebusawaySDK
63
61
 
64
62
  case body
65
63
  in nil
64
+ nil
66
65
  in String
67
- req.body = body
66
+ req["content-length"] ||= body.bytesize.to_s unless req["transfer-encoding"]
67
+ req.body_stream = OnebusawaySDK::Util::ReadIOAdapter.new(body, &)
68
68
  in StringIO
69
- req.body = body.string
70
- in IO
71
- body.rewind
72
- req.body_stream = body
69
+ req["content-length"] ||= body.size.to_s unless req["transfer-encoding"]
70
+ req.body_stream = OnebusawaySDK::Util::ReadIOAdapter.new(body, &)
71
+ in IO | Enumerator
72
+ req["transfer-encoding"] ||= "chunked" unless req["content-length"]
73
+ req.body_stream = OnebusawaySDK::Util::ReadIOAdapter.new(body, &)
73
74
  end
74
75
 
75
76
  req
76
77
  end
77
78
  end
78
79
 
79
- # @private
80
+ # @api private
80
81
  #
81
82
  # @param url [URI::Generic]
83
+ # @param deadline [Float]
82
84
  # @param blk [Proc]
83
- #
84
- private def with_pool(url, &blk)
85
+ private def with_pool(url, deadline:, &blk)
85
86
  origin = OnebusawaySDK::Util.uri_origin(url)
86
- th = Thread.current
87
- key = :"#{object_id}-#{self.class.name}-connection_in_use_for_#{origin}"
88
-
89
- if th[key]
90
- tap do
91
- conn = self.class.connect(url)
92
- return blk.call(conn)
93
- ensure
94
- conn.finish if conn&.started?
95
- end
96
- end
97
-
87
+ timeout = deadline - OnebusawaySDK::Util.monotonic_secs
98
88
  pool =
99
89
  @mutex.synchronize do
100
- @pools[origin] ||= ConnectionPool.new(size: Etc.nprocessors) do
90
+ @pools[origin] ||= ConnectionPool.new(size: @size) do
101
91
  self.class.connect(url)
102
92
  end
103
93
  end
104
94
 
105
- pool.with do |conn|
106
- th[key] = true
107
- blk.call(conn)
108
- ensure
109
- th[key] = nil
110
- end
95
+ pool.with(timeout: timeout, &blk)
111
96
  end
112
97
 
113
- # @private
98
+ # @api private
114
99
  #
115
100
  # @param request [Hash{Symbol=>Object}] .
116
101
  #
@@ -124,24 +109,26 @@ module OnebusawaySDK
124
109
  #
125
110
  # @option request [Float] :deadline
126
111
  #
127
- # @return [Array(Net::HTTPResponse, Enumerable)]
128
- #
112
+ # @return [Array(Integer, Net::HTTPResponse, Enumerable)]
129
113
  def execute(request)
130
114
  url, deadline = request.fetch_values(:url, :deadline)
131
- req = self.class.build_request(request)
132
115
 
133
116
  eof = false
134
117
  finished = false
135
118
  enum = Enumerator.new do |y|
136
- with_pool(url) do |conn|
119
+ with_pool(url, deadline: deadline) do |conn|
137
120
  next if finished
138
121
 
122
+ req = self.class.build_request(request) do
123
+ self.class.calibrate_socket_timeout(conn, deadline)
124
+ end
125
+
139
126
  self.class.calibrate_socket_timeout(conn, deadline)
140
127
  conn.start unless conn.started?
141
128
 
142
129
  self.class.calibrate_socket_timeout(conn, deadline)
143
130
  conn.request(req) do |rsp|
144
- y << [conn, rsp]
131
+ y << [conn, req, rsp]
145
132
  break if finished
146
133
 
147
134
  rsp.read_body do |bytes|
@@ -153,22 +140,29 @@ module OnebusawaySDK
153
140
  eof = true
154
141
  end
155
142
  end
143
+ rescue Timeout::Error
144
+ raise OnebusawaySDK::APITimeoutError
156
145
  end
157
146
 
158
- conn, response = enum.next
159
- body = OnebusawaySDK::Util.fused_enum(enum) do
147
+ conn, _, response = enum.next
148
+ body = OnebusawaySDK::Util.fused_enum(enum, external: true) do
160
149
  finished = true
161
150
  tap do
162
151
  enum.next
163
152
  rescue StopIteration
153
+ nil
164
154
  end
165
155
  conn.finish if !eof && conn&.started?
166
156
  end
167
- [response, (response.body = body)]
157
+ [Integer(response.code), response, (response.body = body)]
168
158
  end
169
159
 
170
- def initialize
160
+ # @api private
161
+ #
162
+ # @param size [Integer]
163
+ def initialize(size: Etc.nprocessors)
171
164
  @mutex = Mutex.new
165
+ @size = size
172
166
  @pools = {}
173
167
  end
174
168
  end
@@ -1,10 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module OnebusawaySDK
4
- # @private
5
- #
6
- # @abstract
7
- #
4
+ # @api private
8
5
  module RequestParameters
9
6
  # @!parse
10
7
  # # Options to specify HTTP behaviour for this request.
@@ -12,7 +9,6 @@ module OnebusawaySDK
12
9
  # attr_accessor :request_options
13
10
 
14
11
  # @param mod [Module]
15
- #
16
12
  def self.included(mod)
17
13
  return unless mod <= OnebusawaySDK::BaseModel
18
14
 
@@ -20,15 +16,13 @@ module OnebusawaySDK
20
16
  mod.optional(:request_options, OnebusawaySDK::RequestOptions)
21
17
  end
22
18
 
23
- # @private
24
- #
19
+ # @api private
25
20
  module Converter
26
- # @private
21
+ # @api private
27
22
  #
28
23
  # @param params [Object]
29
24
  #
30
25
  # @return [Array(Object, Hash{Symbol=>Object})]
31
- #
32
26
  def dump_request(params)
33
27
  case (dumped = dump(params))
34
28
  in Hash
@@ -46,12 +40,11 @@ module OnebusawaySDK
46
40
  # When making a request, you can pass an actual {RequestOptions} instance, or
47
41
  # simply pass a Hash with symbol keys matching the attributes on this class.
48
42
  class RequestOptions < OnebusawaySDK::BaseModel
49
- # @private
43
+ # @api private
50
44
  #
51
45
  # @param opts [OnebusawaySDK::RequestOptions, Hash{Symbol=>Object}]
52
46
  #
53
47
  # @raise [ArgumentError]
54
- #
55
48
  def self.validate!(opts)
56
49
  case opts
57
50
  in OnebusawaySDK::RequestOptions | Hash
@@ -11,7 +11,6 @@ module OnebusawaySDK
11
11
  # @option params [OnebusawaySDK::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
12
12
  #
13
13
  # @return [OnebusawaySDK::Models::AgenciesWithCoverageListResponse]
14
- #
15
14
  def list(params = {})
16
15
  @client.request(
17
16
  method: :get,
@@ -22,7 +21,6 @@ module OnebusawaySDK
22
21
  end
23
22
 
24
23
  # @param client [OnebusawaySDK::Client]
25
- #
26
24
  def initialize(client:)
27
25
  @client = client
28
26
  end
@@ -12,7 +12,6 @@ module OnebusawaySDK
12
12
  # @option params [OnebusawaySDK::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
13
13
  #
14
14
  # @return [OnebusawaySDK::Models::AgencyRetrieveResponse]
15
- #
16
15
  def retrieve(agency_id, params = {})
17
16
  @client.request(
18
17
  method: :get,
@@ -23,7 +22,6 @@ module OnebusawaySDK
23
22
  end
24
23
 
25
24
  # @param client [OnebusawaySDK::Client]
26
- #
27
25
  def initialize(client:)
28
26
  @client = client
29
27
  end
@@ -22,7 +22,6 @@ module OnebusawaySDK
22
22
  # @option params [OnebusawaySDK::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
23
23
  #
24
24
  # @return [OnebusawaySDK::Models::ArrivalAndDepartureRetrieveResponse]
25
- #
26
25
  def retrieve(stop_id, params)
27
26
  parsed, options = OnebusawaySDK::Models::ArrivalAndDepartureRetrieveParams.dump_request(params)
28
27
  @client.request(
@@ -49,7 +48,6 @@ module OnebusawaySDK
49
48
  # @option params [OnebusawaySDK::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
50
49
  #
51
50
  # @return [OnebusawaySDK::Models::ArrivalAndDepartureListResponse]
52
- #
53
51
  def list(stop_id, params = {})
54
52
  parsed, options = OnebusawaySDK::Models::ArrivalAndDepartureListParams.dump_request(params)
55
53
  @client.request(
@@ -62,7 +60,6 @@ module OnebusawaySDK
62
60
  end
63
61
 
64
62
  # @param client [OnebusawaySDK::Client]
65
- #
66
63
  def initialize(client:)
67
64
  @client = client
68
65
  end
@@ -12,7 +12,6 @@ module OnebusawaySDK
12
12
  # @option params [OnebusawaySDK::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
13
13
  #
14
14
  # @return [OnebusawaySDK::Models::BlockRetrieveResponse]
15
- #
16
15
  def retrieve(block_id, params = {})
17
16
  @client.request(
18
17
  method: :get,
@@ -23,7 +22,6 @@ module OnebusawaySDK
23
22
  end
24
23
 
25
24
  # @param client [OnebusawaySDK::Client]
26
- #
27
25
  def initialize(client:)
28
26
  @client = client
29
27
  end
@@ -10,7 +10,6 @@ module OnebusawaySDK
10
10
  # @option params [OnebusawaySDK::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
11
11
  #
12
12
  # @return [OnebusawaySDK::Models::ConfigRetrieveResponse]
13
- #
14
13
  def retrieve(params = {})
15
14
  @client.request(
16
15
  method: :get,
@@ -21,7 +20,6 @@ module OnebusawaySDK
21
20
  end
22
21
 
23
22
  # @param client [OnebusawaySDK::Client]
24
- #
25
23
  def initialize(client:)
26
24
  @client = client
27
25
  end
@@ -10,7 +10,6 @@ module OnebusawaySDK
10
10
  # @option params [OnebusawaySDK::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
11
11
  #
12
12
  # @return [OnebusawaySDK::Models::CurrentTimeRetrieveResponse]
13
- #
14
13
  def retrieve(params = {})
15
14
  @client.request(
16
15
  method: :get,
@@ -21,7 +20,6 @@ module OnebusawaySDK
21
20
  end
22
21
 
23
22
  # @param client [OnebusawaySDK::Client]
24
- #
25
23
  def initialize(client:)
26
24
  @client = client
27
25
  end
@@ -22,7 +22,6 @@ module OnebusawaySDK
22
22
  # @option params [OnebusawaySDK::RequestOptions, Hash{Symbol=>Object}, nil] :request_options
23
23
  #
24
24
  # @return [OnebusawaySDK::Models::ResponseWrapper]
25
- #
26
25
  def retrieve(stop_id, params = {})
27
26
  parsed, options = OnebusawaySDK::Models::ReportProblemWithStopRetrieveParams.dump_request(params)
28
27
  @client.request(
@@ -35,7 +34,6 @@ module OnebusawaySDK
35
34
  end
36
35
 
37
36
  # @param client [OnebusawaySDK::Client]
38
- #
39
37
  def initialize(client:)
40
38
  @client = client
41
39
  end