rubybikes 0.3.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.
Files changed (118) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +12 -0
  3. data/CONTRIBUTING.md +33 -0
  4. data/LICENSE +662 -0
  5. data/NOTICE +10 -0
  6. data/PROVIDERS.md +123 -0
  7. data/README.md +108 -0
  8. data/RELEASING.md +44 -0
  9. data/data/ATTRIBUTION.txt +290 -0
  10. data/data/geojson/ch_cantons.json +53 -0
  11. data/data/geojson/japan_prefectures.json +49 -0
  12. data/data/geojson/penang.json +63 -0
  13. data/data/graphql/charichari.graphql +12 -0
  14. data/data/graphql/ganxeta.graphql +22 -0
  15. data/data/graphql/otp.graphql +68 -0
  16. data/data/providers.json +1 -0
  17. data/data/pybikes/aksu.json +49 -0
  18. data/data/pybikes/ambici.json +166 -0
  19. data/data/pybikes/baksi.json +41 -0
  20. data/data/pybikes/batumvelo.json +19 -0
  21. data/data/pybikes/bcycle.json +326 -0
  22. data/data/pybikes/beryl.json +195 -0
  23. data/data/pybikes/bicicard.json +205 -0
  24. data/data/pybikes/bicicas.json +20 -0
  25. data/data/pybikes/bicielx.json +19 -0
  26. data/data/pybikes/biciferrolterra.json +21 -0
  27. data/data/pybikes/bicimad.json +16 -0
  28. data/data/pybikes/bicincitta.json +1551 -0
  29. data/data/pybikes/bicing.json +37 -0
  30. data/data/pybikes/bikeshare_ie.json +46 -0
  31. data/data/pybikes/bikeu.json +17 -0
  32. data/data/pybikes/bixi.json +21 -0
  33. data/data/pybikes/bizkaibizi.json +105 -0
  34. data/data/pybikes/careem.json +40 -0
  35. data/data/pybikes/charichari.json +106 -0
  36. data/data/pybikes/chartered_bike.json +86 -0
  37. data/data/pybikes/clujbike.json +17 -0
  38. data/data/pybikes/cyclocity.json +211 -0
  39. data/data/pybikes/cyclopolis.json +78 -0
  40. data/data/pybikes/cykleo.json +39 -0
  41. data/data/pybikes/decobike.json +18 -0
  42. data/data/pybikes/derp.json +114 -0
  43. data/data/pybikes/deutschebahn.json +97 -0
  44. data/data/pybikes/digitransit.json +123 -0
  45. data/data/pybikes/docomo.json +215 -0
  46. data/data/pybikes/easybike.json +160 -0
  47. data/data/pybikes/ecovelo.json +307 -0
  48. data/data/pybikes/emovity.json +17 -0
  49. data/data/pybikes/encicla.json +17 -0
  50. data/data/pybikes/fifteen.json +50 -0
  51. data/data/pybikes/fsm.json +16 -0
  52. data/data/pybikes/ganxeta.json +20 -0
  53. data/data/pybikes/gbfs.json +1578 -0
  54. data/data/pybikes/gira.json +20 -0
  55. data/data/pybikes/gyorbike.json +19 -0
  56. data/data/pybikes/hellocycling.json +248 -0
  57. data/data/pybikes/joco.json +22 -0
  58. data/data/pybikes/keolis.json +22 -0
  59. data/data/pybikes/kolumbus.json +18 -0
  60. data/data/pybikes/lastenvelo.json +30 -0
  61. data/data/pybikes/linkbike.json +17 -0
  62. data/data/pybikes/meiob.json +18 -0
  63. data/data/pybikes/mobhis.json +43 -0
  64. data/data/pybikes/movus.json +72 -0
  65. data/data/pybikes/nextbike.json +2443 -0
  66. data/data/pybikes/nextbike_gbfs.json +5 -0
  67. data/data/pybikes/nubija.json +18 -0
  68. data/data/pybikes/open_source_bike_share.json +28 -0
  69. data/data/pybikes/open_source_bike_share_v2.json +17 -0
  70. data/data/pybikes/openmove.json +20 -0
  71. data/data/pybikes/ov_fiets.json +20 -0
  72. data/data/pybikes/pedalada.json +66 -0
  73. data/data/pybikes/publibike.json +127 -0
  74. data/data/pybikes/qrobici.json +20 -0
  75. data/data/pybikes/roovee.json +245 -0
  76. data/data/pybikes/samba.json +52 -0
  77. data/data/pybikes/sejong.json +19 -0
  78. data/data/pybikes/seoulbike.json +18 -0
  79. data/data/pybikes/sharedmobility.json +63 -0
  80. data/data/pybikes/slovnaft_bajk.json +21 -0
  81. data/data/pybikes/smartbike.json +28 -0
  82. data/data/pybikes/smoove.json +26 -0
  83. data/data/pybikes/soltrafego.json +39 -0
  84. data/data/pybikes/tashu.json +20 -0
  85. data/data/pybikes/urbansharing.json +22 -0
  86. data/data/pybikes/velib.json +23 -0
  87. data/data/pybikes/velobike_kz.json +17 -0
  88. data/data/pybikes/velok.json +16 -0
  89. data/data/pybikes/veloway.json +20 -0
  90. data/data/pybikes/weelo.json +45 -0
  91. data/data/pybikes/wegoshare.json +141 -0
  92. data/data/pybikes/xian.json +19 -0
  93. data/data/pybikes/yelovelo.json +22 -0
  94. data/data/pybikes/youbike.json +173 -0
  95. data/data/upstream.json +7 -0
  96. data/lib/rubybikes/engine.rb +3 -0
  97. data/lib/rubybikes/native/authenticated.rb +95 -0
  98. data/lib/rubybikes/native/engine.rb +103 -0
  99. data/lib/rubybikes/native/gbfs.rb +169 -0
  100. data/lib/rubybikes/native/geometry.rb +53 -0
  101. data/lib/rubybikes/native/graphql.rb +135 -0
  102. data/lib/rubybikes/native/html_clients.rb +313 -0
  103. data/lib/rubybikes/native/json_providers.rb +174 -0
  104. data/lib/rubybikes/native/more_json.rb +126 -0
  105. data/lib/rubybikes/native/nextbike.rb +50 -0
  106. data/lib/rubybikes/native/provider.rb +84 -0
  107. data/lib/rubybikes/native/remaining_clients.rb +102 -0
  108. data/lib/rubybikes/native/response_cache.rb +78 -0
  109. data/lib/rubybikes/native/transport.rb +163 -0
  110. data/lib/rubybikes/native/xml_details.rb +159 -0
  111. data/lib/rubybikes/native.rb +30 -0
  112. data/lib/rubybikes/version.rb +5 -0
  113. data/lib/rubybikes.rb +201 -0
  114. data/sig/external.rbs +30 -0
  115. data/sig/manifest.yaml +8 -0
  116. data/sig/native.rbs +230 -0
  117. data/sig/rubybikes.rbs +143 -0
  118. metadata +230 -0
data/sig/rubybikes.rbs ADDED
@@ -0,0 +1,143 @@
1
+ class RubyBikes
2
+ VERSION: String
3
+ type json = nil | bool | Integer | Float | String | Array[json] | Hash[String, json]
4
+ type object = Hash[String, untyped]
5
+ type options = Hash[String | Symbol, untyped]
6
+ type api_key = String | options | nil
7
+ type station_row = { 'id' => String, 'name' => String?, 'latitude' => Float, 'longitude' => Float, 'bikes' => Integer?, 'free' => Integer?, 'timestamp' => String?, 'extra' => object }
8
+ type vehicle_row = { 'id' => String, 'latitude' => Float, 'longitude' => Float, 'kind' => String, 'timestamp' => String?, 'extra' => object }
9
+
10
+ interface _Engine
11
+ def timeout: () -> Float
12
+ def request: (String, ?timeout: Numeric, **untyped) -> untyped
13
+ def close: () -> void
14
+ end
15
+
16
+ @engine: _Engine
17
+ @keys: object
18
+ @catalog: Array[object]?
19
+ @providers: Array[object]?
20
+
21
+ def initialize: (?timeout: Numeric, ?keys: options, ?engine: _Engine?) -> void
22
+ def catalog: () -> Array[object]
23
+ def engine_info: () -> object
24
+ def providers: () -> Array[object]
25
+ def tags: () -> Array[String]
26
+ def labels: () -> Array[String]
27
+ def get: (String) -> System
28
+ | (tag: String, ?api_key: api_key, ?key: api_key) -> System
29
+ | (label: String, ?api_key: api_key, ?key: api_key) -> Array[System]
30
+ | ({ 'tag' => String }, **untyped) -> System
31
+ | ({ 'label' => String }, **untyped) -> Array[System]
32
+ | (?options, **untyped) -> (System | Array[System])
33
+ def build: (provider: String | Symbol, tag: String, meta: options, ?class_name: String?, ?api_key: api_key, **untyped) -> System
34
+ def close: () -> void
35
+ def self.open: (?timeout: Numeric, ?keys: options, ?engine: _Engine?) -> RubyBikes
36
+ | [A] (?timeout: Numeric, ?keys: options, ?engine: _Engine?) { (RubyBikes) -> A } -> A
37
+
38
+ class Error < StandardError
39
+ @details: object
40
+ attr_reader details: object
41
+ def initialize: (String, ?details: object) -> void
42
+ end
43
+ class DependencyError < Error
44
+ end
45
+ class ProviderError < Error
46
+ end
47
+ class ProtocolError < Error
48
+ end
49
+ class TimeoutError < Error
50
+ end
51
+ class RateLimitedError < ProviderError
52
+ def retry_after: () -> Float
53
+ def host: () -> String?
54
+ end
55
+ class NoSystemFoundError < Error
56
+ end
57
+ class NoGetCriteriaError < Error
58
+ end
59
+ class APIKeyNotAvailableError < Error
60
+ end
61
+
62
+ class Station
63
+ @id: String
64
+ @name: String?
65
+ @latitude: Float
66
+ @longitude: Float
67
+ @bikes: Integer?
68
+ @free: Integer?
69
+ @timestamp: Time?
70
+ @extra: object
71
+ attr_reader id: String
72
+ attr_reader name: String?
73
+ attr_reader latitude: Float
74
+ attr_reader longitude: Float
75
+ attr_reader bikes: Integer?
76
+ attr_reader free: Integer?
77
+ attr_reader timestamp: Time?
78
+ attr_reader extra: object
79
+ def initialize: (object) -> void
80
+ def get_hash: () -> String
81
+ def to_h: () -> station_row
82
+ alias to_dict to_h
83
+ def to_json: (?untyped) -> String
84
+ def to_geojson: () -> object
85
+ end
86
+
87
+ class Vehicle
88
+ @id: String
89
+ @latitude: Float
90
+ @longitude: Float
91
+ @kind: String
92
+ @timestamp: Time?
93
+ @extra: object
94
+ attr_reader id: String
95
+ attr_reader latitude: Float
96
+ attr_reader longitude: Float
97
+ attr_reader kind: String
98
+ attr_reader timestamp: Time?
99
+ attr_reader extra: object
100
+ def initialize: (object) -> void
101
+ def get_hash: () -> String
102
+ def to_h: () -> vehicle_row
103
+ alias to_dict to_h
104
+ def to_json: (?untyped) -> String
105
+ def to_geojson: () -> object
106
+ end
107
+
108
+ class System
109
+ @engine: _Engine
110
+ @key: api_key
111
+ @definition: object?
112
+ @tag: String
113
+ @meta: object
114
+ @stations: Array[Station]
115
+ @vehicles: Array[Vehicle]
116
+ @authed: bool
117
+ @sync: bool
118
+ @unifeed: bool
119
+ @provider: String
120
+ @client_class: String
121
+ attr_reader tag: String
122
+ attr_reader meta: object
123
+ attr_reader stations: Array[Station]
124
+ attr_reader vehicles: Array[Vehicle]
125
+ attr_reader authed: bool
126
+ attr_reader sync: bool
127
+ attr_reader unifeed: bool
128
+ attr_reader provider: String
129
+ attr_reader client_class: String
130
+ def initialize: (_Engine, object, api_key, ?definition: object?) -> void
131
+ def update: (?timeout: Numeric, ?scraper: options) -> self
132
+ def to_h: () -> object
133
+ alias to_dict to_h
134
+ def to_json: (?untyped) -> String
135
+ def to_geojson: () -> object
136
+ end
137
+
138
+ class Engine = Native::Engine
139
+ end
140
+
141
+ class NoSystemFoundError = RubyBikes::NoSystemFoundError
142
+ class NoGetCriteriaError = RubyBikes::NoGetCriteriaError
143
+ class APIKeyNotAvailableError = RubyBikes::APIKeyNotAvailableError
metadata ADDED
@@ -0,0 +1,230 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubybikes
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ platform: ruby
6
+ authors:
7
+ - Eduardo Mucelli Rezende Oliveira
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: csv
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '3.2'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '4'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '3.2'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '4'
32
+ - !ruby/object:Gem::Dependency
33
+ name: http-cookie
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: '1.0'
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - "~>"
44
+ - !ruby/object:Gem::Version
45
+ version: '1.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: nokogiri
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '1.18'
53
+ - - "<"
54
+ - !ruby/object:Gem::Version
55
+ version: '2'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '1.18'
63
+ - - "<"
64
+ - !ruby/object:Gem::Version
65
+ version: '2'
66
+ - !ruby/object:Gem::Dependency
67
+ name: timeout
68
+ requirement: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '0.6'
73
+ type: :runtime
74
+ prerelease: false
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '0.6'
80
+ description: Bike-sharing stations and vehicles through native Ruby provider clients,
81
+ with a catalog derived from PyBikes.
82
+ email: edumucelli@gmail.com
83
+ executables: []
84
+ extensions: []
85
+ extra_rdoc_files: []
86
+ files:
87
+ - CHANGELOG.md
88
+ - CONTRIBUTING.md
89
+ - LICENSE
90
+ - NOTICE
91
+ - PROVIDERS.md
92
+ - README.md
93
+ - RELEASING.md
94
+ - data/ATTRIBUTION.txt
95
+ - data/geojson/ch_cantons.json
96
+ - data/geojson/japan_prefectures.json
97
+ - data/geojson/penang.json
98
+ - data/graphql/charichari.graphql
99
+ - data/graphql/ganxeta.graphql
100
+ - data/graphql/otp.graphql
101
+ - data/providers.json
102
+ - data/pybikes/aksu.json
103
+ - data/pybikes/ambici.json
104
+ - data/pybikes/baksi.json
105
+ - data/pybikes/batumvelo.json
106
+ - data/pybikes/bcycle.json
107
+ - data/pybikes/beryl.json
108
+ - data/pybikes/bicicard.json
109
+ - data/pybikes/bicicas.json
110
+ - data/pybikes/bicielx.json
111
+ - data/pybikes/biciferrolterra.json
112
+ - data/pybikes/bicimad.json
113
+ - data/pybikes/bicincitta.json
114
+ - data/pybikes/bicing.json
115
+ - data/pybikes/bikeshare_ie.json
116
+ - data/pybikes/bikeu.json
117
+ - data/pybikes/bixi.json
118
+ - data/pybikes/bizkaibizi.json
119
+ - data/pybikes/careem.json
120
+ - data/pybikes/charichari.json
121
+ - data/pybikes/chartered_bike.json
122
+ - data/pybikes/clujbike.json
123
+ - data/pybikes/cyclocity.json
124
+ - data/pybikes/cyclopolis.json
125
+ - data/pybikes/cykleo.json
126
+ - data/pybikes/decobike.json
127
+ - data/pybikes/derp.json
128
+ - data/pybikes/deutschebahn.json
129
+ - data/pybikes/digitransit.json
130
+ - data/pybikes/docomo.json
131
+ - data/pybikes/easybike.json
132
+ - data/pybikes/ecovelo.json
133
+ - data/pybikes/emovity.json
134
+ - data/pybikes/encicla.json
135
+ - data/pybikes/fifteen.json
136
+ - data/pybikes/fsm.json
137
+ - data/pybikes/ganxeta.json
138
+ - data/pybikes/gbfs.json
139
+ - data/pybikes/gira.json
140
+ - data/pybikes/gyorbike.json
141
+ - data/pybikes/hellocycling.json
142
+ - data/pybikes/joco.json
143
+ - data/pybikes/keolis.json
144
+ - data/pybikes/kolumbus.json
145
+ - data/pybikes/lastenvelo.json
146
+ - data/pybikes/linkbike.json
147
+ - data/pybikes/meiob.json
148
+ - data/pybikes/mobhis.json
149
+ - data/pybikes/movus.json
150
+ - data/pybikes/nextbike.json
151
+ - data/pybikes/nextbike_gbfs.json
152
+ - data/pybikes/nubija.json
153
+ - data/pybikes/open_source_bike_share.json
154
+ - data/pybikes/open_source_bike_share_v2.json
155
+ - data/pybikes/openmove.json
156
+ - data/pybikes/ov_fiets.json
157
+ - data/pybikes/pedalada.json
158
+ - data/pybikes/publibike.json
159
+ - data/pybikes/qrobici.json
160
+ - data/pybikes/roovee.json
161
+ - data/pybikes/samba.json
162
+ - data/pybikes/sejong.json
163
+ - data/pybikes/seoulbike.json
164
+ - data/pybikes/sharedmobility.json
165
+ - data/pybikes/slovnaft_bajk.json
166
+ - data/pybikes/smartbike.json
167
+ - data/pybikes/smoove.json
168
+ - data/pybikes/soltrafego.json
169
+ - data/pybikes/tashu.json
170
+ - data/pybikes/urbansharing.json
171
+ - data/pybikes/velib.json
172
+ - data/pybikes/velobike_kz.json
173
+ - data/pybikes/velok.json
174
+ - data/pybikes/veloway.json
175
+ - data/pybikes/weelo.json
176
+ - data/pybikes/wegoshare.json
177
+ - data/pybikes/xian.json
178
+ - data/pybikes/yelovelo.json
179
+ - data/pybikes/youbike.json
180
+ - data/upstream.json
181
+ - lib/rubybikes.rb
182
+ - lib/rubybikes/engine.rb
183
+ - lib/rubybikes/native.rb
184
+ - lib/rubybikes/native/authenticated.rb
185
+ - lib/rubybikes/native/engine.rb
186
+ - lib/rubybikes/native/gbfs.rb
187
+ - lib/rubybikes/native/geometry.rb
188
+ - lib/rubybikes/native/graphql.rb
189
+ - lib/rubybikes/native/html_clients.rb
190
+ - lib/rubybikes/native/json_providers.rb
191
+ - lib/rubybikes/native/more_json.rb
192
+ - lib/rubybikes/native/nextbike.rb
193
+ - lib/rubybikes/native/provider.rb
194
+ - lib/rubybikes/native/remaining_clients.rb
195
+ - lib/rubybikes/native/response_cache.rb
196
+ - lib/rubybikes/native/transport.rb
197
+ - lib/rubybikes/native/xml_details.rb
198
+ - lib/rubybikes/version.rb
199
+ - sig/external.rbs
200
+ - sig/manifest.yaml
201
+ - sig/native.rbs
202
+ - sig/rubybikes.rbs
203
+ homepage: https://github.com/edumucelli/rubybikes
204
+ licenses:
205
+ - AGPL-3.0
206
+ metadata:
207
+ source_code_uri: https://github.com/edumucelli/rubybikes
208
+ bug_tracker_uri: https://github.com/edumucelli/rubybikes/issues
209
+ changelog_uri: https://github.com/edumucelli/rubybikes/blob/master/CHANGELOG.md
210
+ documentation_uri: https://github.com/edumucelli/rubybikes#readme
211
+ allowed_push_host: https://rubygems.org
212
+ rubygems_mfa_required: 'true'
213
+ rdoc_options: []
214
+ require_paths:
215
+ - lib
216
+ required_ruby_version: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '3.1'
221
+ required_rubygems_version: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - ">="
224
+ - !ruby/object:Gem::Version
225
+ version: '0'
226
+ requirements: []
227
+ rubygems_version: 3.6.9
228
+ specification_version: 4
229
+ summary: Native Ruby clients for worldwide bike-sharing providers
230
+ test_files: []