tesla 0.0.1 → 0.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 +7 -0
- data/.yardopts +5 -0
- data/CHANGELOG.md +31 -0
- data/CONTRIBUTING.md +45 -0
- data/{LICENSE.txt → LICENSE.md} +1 -1
- data/README.md +366 -0
- data/SECURITY.md +38 -0
- data/lib/tesla/api/alert_endpoints.rb +35 -0
- data/lib/tesla/api/charging_endpoints.rb +115 -0
- data/lib/tesla/api/climate_endpoints.rb +180 -0
- data/lib/tesla/api/closure_endpoints.rb +142 -0
- data/lib/tesla/api/command_endpoints.rb +63 -0
- data/lib/tesla/api/media_endpoints.rb +114 -0
- data/lib/tesla/api/navigation_endpoints.rb +51 -0
- data/lib/tesla/api/oauth_endpoints.rb +118 -0
- data/lib/tesla/api/partner_endpoints.rb +62 -0
- data/lib/tesla/api/security_endpoints.rb +123 -0
- data/lib/tesla/api/software_endpoints.rb +38 -0
- data/lib/tesla/api/user_endpoints.rb +40 -0
- data/lib/tesla/api/vehicle_endpoints.rb +174 -0
- data/lib/tesla/api.rb +39 -0
- data/lib/tesla/authenticator.rb +33 -0
- data/lib/tesla/bearer_token_authenticator.rb +38 -0
- data/lib/tesla/certificate_options.rb +51 -0
- data/lib/tesla/charge_state.rb +111 -0
- data/lib/tesla/charging_site.rb +67 -0
- data/lib/tesla/client.rb +336 -0
- data/lib/tesla/client_credentials.rb +230 -0
- data/lib/tesla/climate_state.rb +116 -0
- data/lib/tesla/configuration.rb +483 -0
- data/lib/tesla/connection.rb +361 -0
- data/lib/tesla/connection_pool.rb +186 -0
- data/lib/tesla/deep_copy.rb +41 -0
- data/lib/tesla/drive_state.rb +80 -0
- data/lib/tesla/errors/bad_gateway.rb +9 -0
- data/lib/tesla/errors/bad_request.rb +9 -0
- data/lib/tesla/errors/client_error.rb +9 -0
- data/lib/tesla/errors/command_failed.rb +42 -0
- data/lib/tesla/errors/device_unexpected_response.rb +12 -0
- data/lib/tesla/errors/error.rb +7 -0
- data/lib/tesla/errors/forbidden.rb +14 -0
- data/lib/tesla/errors/gateway_timeout.rb +9 -0
- data/lib/tesla/errors/http_error.rb +89 -0
- data/lib/tesla/errors/internal_server_error.rb +9 -0
- data/lib/tesla/errors/invalid_response.rb +33 -0
- data/lib/tesla/errors/locked.rb +12 -0
- data/lib/tesla/errors/method_not_allowed.rb +9 -0
- data/lib/tesla/errors/misdirected_request.rb +13 -0
- data/lib/tesla/errors/network_error.rb +30 -0
- data/lib/tesla/errors/not_acceptable.rb +9 -0
- data/lib/tesla/errors/not_found.rb +9 -0
- data/lib/tesla/errors/oauth_error.rb +53 -0
- data/lib/tesla/errors/payment_required.rb +12 -0
- data/lib/tesla/errors/precondition_failed.rb +13 -0
- data/lib/tesla/errors/request_timeout.rb +13 -0
- data/lib/tesla/errors/server_error.rb +9 -0
- data/lib/tesla/errors/service_unavailable.rb +9 -0
- data/lib/tesla/errors/too_many_redirects.rb +9 -0
- data/lib/tesla/errors/too_many_requests.rb +9 -0
- data/lib/tesla/errors/unauthorized.rb +9 -0
- data/lib/tesla/errors/unavailable_for_legal_reasons.rb +12 -0
- data/lib/tesla/errors/unprocessable_content.rb +12 -0
- data/lib/tesla/errors/vehicle_asleep.rb +32 -0
- data/lib/tesla/gui_settings.rb +60 -0
- data/lib/tesla/idempotence.rb +30 -0
- data/lib/tesla/identifiers.rb +27 -0
- data/lib/tesla/json_parsing.rb +38 -0
- data/lib/tesla/nearby_charging_sites.rb +35 -0
- data/lib/tesla/path_escaping.rb +30 -0
- data/lib/tesla/redacted_output.rb +161 -0
- data/lib/tesla/redirect_handler.rb +196 -0
- data/lib/tesla/region.rb +27 -0
- data/lib/tesla/request_builder.rb +138 -0
- data/lib/tesla/resource.rb +403 -0
- data/lib/tesla/response_parser.rb +92 -0
- data/lib/tesla/retry_after.rb +34 -0
- data/lib/tesla/retry_handler.rb +252 -0
- data/lib/tesla/settings.rb +115 -0
- data/lib/tesla/url_validation.rb +131 -0
- data/lib/tesla/user.rb +36 -0
- data/lib/tesla/vehicle.rb +90 -0
- data/lib/tesla/vehicle_config.rb +95 -0
- data/lib/tesla/vehicle_data.rb +67 -0
- data/lib/tesla/vehicle_state.rb +125 -0
- data/lib/tesla/version.rb +6 -0
- data/lib/tesla.rb +139 -0
- data/sig/manifest.yaml +10 -0
- data/sig/tesla.rbs +989 -0
- metadata +134 -118
- data/.document +0 -5
- data/.rvmrc +0 -1
- data/Gemfile +0 -13
- data/Gemfile.lock +0 -20
- data/README.rdoc +0 -19
- data/Rakefile +0 -47
- data/test/helper.rb +0 -19
- data/test/test_tesla.rb +0 -7
data/sig/tesla.rbs
ADDED
|
@@ -0,0 +1,989 @@
|
|
|
1
|
+
module Tesla
|
|
2
|
+
VERSION: String
|
|
3
|
+
|
|
4
|
+
type vehicle_identifier = String | Integer | Vehicle
|
|
5
|
+
type request_body = Hash[Symbol | String, untyped] | Array[untyped] | String
|
|
6
|
+
type scope = Array[String] | String
|
|
7
|
+
|
|
8
|
+
interface _TokenRefresh
|
|
9
|
+
def call: (SimpleOAuth::OAuth2::Token token) -> untyped
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
extend Configuration
|
|
13
|
+
extend SingleForwardable
|
|
14
|
+
|
|
15
|
+
private def self.def_delegator: (interned accessor, Symbol method, ?Symbol ali) -> void
|
|
16
|
+
private def self.def_delegators: (interned accessor, *Symbol methods) -> void
|
|
17
|
+
private def self.def_single_delegator: (interned accessor, Symbol method, ?Symbol ali) -> void
|
|
18
|
+
private def self.def_single_delegators: (interned accessor, *Symbol methods) -> void
|
|
19
|
+
private def self.delegate: (Hash[Symbol | Array[Symbol], Symbol] hash) -> void
|
|
20
|
+
private def self.single_delegate: (Hash[Symbol | Array[Symbol], Symbol] hash) -> void
|
|
21
|
+
|
|
22
|
+
self.@client: Client
|
|
23
|
+
self.@client_values: Array[untyped]?
|
|
24
|
+
self.@applied_values: Array[untyped]?
|
|
25
|
+
|
|
26
|
+
CLIENT_MUTEX: Thread::Mutex
|
|
27
|
+
CLIENT_SETTINGS: Array[Symbol]
|
|
28
|
+
APPLIED_SETTINGS: Array[Symbol]
|
|
29
|
+
|
|
30
|
+
def self.client: () -> Client
|
|
31
|
+
def self.reset: () -> self
|
|
32
|
+
private def self.rebuild_client: () -> Array[untyped]
|
|
33
|
+
private def self.values_of: (Array[Symbol] settings) -> Array[untyped]
|
|
34
|
+
private def self.apply_settings: () -> Array[untyped]
|
|
35
|
+
|
|
36
|
+
def self.new: (?host: String, ?access_token: String?, ?refresh_token: String?, ?client_id: String?, ?client_secret: String?, ?redirect_uri: String?, ?audience: String?, ?authorization_endpoint: String, ?token_endpoint: String, ?on_token_refresh: _TokenRefresh?, ?user_agent: String, ?open_timeout: Numeric, ?read_timeout: Numeric, ?write_timeout: Numeric, ?debug_output: IO?, ?proxy_url: String?, ?keep_alive_timeout: Numeric, ?max_redirects: Integer, ?ca_file: String?, ?max_retries: Integer, ?max_retry_delay: Numeric) -> Client
|
|
37
|
+
| [T] (?host: String, ?access_token: String?, ?refresh_token: String?, ?client_id: String?, ?client_secret: String?, ?redirect_uri: String?, ?audience: String?, ?authorization_endpoint: String, ?token_endpoint: String, ?on_token_refresh: _TokenRefresh?, ?user_agent: String, ?open_timeout: Numeric, ?read_timeout: Numeric, ?write_timeout: Numeric, ?debug_output: IO?, ?proxy_url: String?, ?keep_alive_timeout: Numeric, ?max_redirects: Integer, ?ca_file: String?, ?max_retries: Integer, ?max_retry_delay: Numeric) { (Client client) -> T } -> T
|
|
38
|
+
def self.command: (vehicle_identifier vehicle, String | Symbol name, **untyped params) -> true
|
|
39
|
+
def self.honk_horn: (vehicle_identifier vehicle) -> true
|
|
40
|
+
def self.flash_lights: (vehicle_identifier vehicle) -> true
|
|
41
|
+
def self.open_charge_port: (vehicle_identifier vehicle) -> true
|
|
42
|
+
def self.close_charge_port: (vehicle_identifier vehicle) -> true
|
|
43
|
+
def self.start_charging: (vehicle_identifier vehicle) -> true
|
|
44
|
+
def self.stop_charging: (vehicle_identifier vehicle) -> true
|
|
45
|
+
def self.set_charge_limit: (vehicle_identifier vehicle, Integer percent) -> true
|
|
46
|
+
def self.set_charging_amps: (vehicle_identifier vehicle, Integer amps) -> true
|
|
47
|
+
def self.charge_to_standard_range: (vehicle_identifier vehicle) -> true
|
|
48
|
+
def self.charge_to_max_range: (vehicle_identifier vehicle) -> true
|
|
49
|
+
def self.start_climate: (vehicle_identifier vehicle) -> true
|
|
50
|
+
def self.stop_climate: (vehicle_identifier vehicle) -> true
|
|
51
|
+
def self.set_temperature: (vehicle_identifier vehicle, Numeric driver, ?Numeric passenger) -> true
|
|
52
|
+
def self.set_max_defrost: (vehicle_identifier vehicle, on: bool) -> true
|
|
53
|
+
def self.set_seat_heater: (vehicle_identifier vehicle, Symbol | String seat, Integer level) -> true
|
|
54
|
+
def self.set_seat_cooler: (vehicle_identifier vehicle, Symbol | String seat, Integer level) -> true
|
|
55
|
+
def self.set_steering_wheel_heater: (vehicle_identifier vehicle, on: bool) -> true
|
|
56
|
+
def self.set_climate_keeper_mode: (vehicle_identifier vehicle, Symbol | String mode) -> true
|
|
57
|
+
def self.set_bioweapon_mode: (vehicle_identifier vehicle, on: bool, ?manual_override: bool) -> true
|
|
58
|
+
def self.set_cabin_overheat_protection: (vehicle_identifier vehicle, on: bool, ?fan_only: bool) -> true
|
|
59
|
+
def self.lock_doors: (vehicle_identifier vehicle) -> true
|
|
60
|
+
def self.unlock_doors: (vehicle_identifier vehicle) -> true
|
|
61
|
+
def self.actuate_trunk: (vehicle_identifier vehicle) -> true
|
|
62
|
+
def self.open_frunk: (vehicle_identifier vehicle) -> true
|
|
63
|
+
def self.vent_windows: (vehicle_identifier vehicle) -> true
|
|
64
|
+
def self.close_windows: (vehicle_identifier vehicle, ?latitude: Numeric, ?longitude: Numeric) -> true
|
|
65
|
+
def self.vent_sunroof: (vehicle_identifier vehicle) -> true
|
|
66
|
+
def self.close_sunroof: (vehicle_identifier vehicle) -> true
|
|
67
|
+
def self.trigger_homelink: (vehicle_identifier vehicle, latitude: Numeric, longitude: Numeric) -> true
|
|
68
|
+
def self.toggle_playback: (vehicle_identifier vehicle) -> true
|
|
69
|
+
def self.next_track: (vehicle_identifier vehicle) -> true
|
|
70
|
+
def self.previous_track: (vehicle_identifier vehicle) -> true
|
|
71
|
+
def self.next_favorite: (vehicle_identifier vehicle) -> true
|
|
72
|
+
def self.previous_favorite: (vehicle_identifier vehicle) -> true
|
|
73
|
+
def self.volume_up: (vehicle_identifier vehicle) -> true
|
|
74
|
+
def self.volume_down: (vehicle_identifier vehicle) -> true
|
|
75
|
+
def self.set_volume: (vehicle_identifier vehicle, Numeric volume) -> true
|
|
76
|
+
def self.navigate_to: (vehicle_identifier vehicle, String destination, ?locale: String) -> true
|
|
77
|
+
def self.navigate_to_coordinates: (vehicle_identifier vehicle, Numeric latitude, Numeric longitude, ?order: Integer) -> true
|
|
78
|
+
def self.authorization_url: (state: String, ?pkce: SimpleOAuth::OAuth2::PKCE?, ?scope: scope, **String? params) -> String
|
|
79
|
+
def self.exchange_code: (String code, ?code_verifier: String?) -> SimpleOAuth::OAuth2::Token
|
|
80
|
+
def self.refresh_access_token: () -> SimpleOAuth::OAuth2::Token
|
|
81
|
+
def self.partner_token: (?scope: scope) -> SimpleOAuth::OAuth2::Token
|
|
82
|
+
def self.register_partner: (String domain) -> Hash[String, untyped]
|
|
83
|
+
def self.partner_public_key: (String domain) -> String
|
|
84
|
+
def self.set_sentry_mode: (vehicle_identifier vehicle, on: bool) -> true
|
|
85
|
+
def self.set_valet_mode: (vehicle_identifier vehicle, on: bool, ?password: String?) -> true
|
|
86
|
+
def self.reset_valet_pin: (vehicle_identifier vehicle) -> true
|
|
87
|
+
def self.remote_start: (vehicle_identifier vehicle) -> true
|
|
88
|
+
def self.set_speed_limit: (vehicle_identifier vehicle, Numeric mph) -> true
|
|
89
|
+
def self.activate_speed_limit: (vehicle_identifier vehicle, String pin) -> true
|
|
90
|
+
def self.deactivate_speed_limit: (vehicle_identifier vehicle, String pin) -> true
|
|
91
|
+
def self.clear_speed_limit_pin: (vehicle_identifier vehicle, String pin) -> true
|
|
92
|
+
def self.schedule_software_update: (vehicle_identifier vehicle, ?offset: Integer) -> true
|
|
93
|
+
def self.cancel_software_update: (vehicle_identifier vehicle) -> true
|
|
94
|
+
def self.me: () -> User
|
|
95
|
+
def self.region: () -> Region
|
|
96
|
+
def self.vehicles: (?page: Integer?, ?per_page: Integer?) -> Array[Vehicle]
|
|
97
|
+
def self.vehicle: (vehicle_identifier vehicle) -> Vehicle
|
|
98
|
+
def self.vehicle_data: (vehicle_identifier vehicle, ?endpoints: (Array[String | Symbol] | String | Symbol)?) -> VehicleData
|
|
99
|
+
def self.wake_up: (vehicle_identifier vehicle, ?timeout: Numeric?, ?interval: Numeric) -> Vehicle
|
|
100
|
+
def self.nearby_charging_sites: (vehicle_identifier vehicle) -> NearbyChargingSites
|
|
101
|
+
def self.mobile_enabled?: (vehicle_identifier vehicle) -> bool
|
|
102
|
+
|
|
103
|
+
module Configuration
|
|
104
|
+
include CertificateOptions
|
|
105
|
+
include Settings
|
|
106
|
+
extend Settings::Declaration
|
|
107
|
+
include URLValidation
|
|
108
|
+
|
|
109
|
+
NORTH_AMERICA_HOST: String
|
|
110
|
+
EUROPE_HOST: String
|
|
111
|
+
CHINA_HOST: String
|
|
112
|
+
DEFAULT_HOST: String
|
|
113
|
+
DEFAULT_AUTHORIZATION_ENDPOINT: String
|
|
114
|
+
DEFAULT_TOKEN_ENDPOINT: String
|
|
115
|
+
DEFAULT_USER_AGENT: String
|
|
116
|
+
ENVIRONMENT: Hash[Symbol, String]
|
|
117
|
+
|
|
118
|
+
attr_reader host: String
|
|
119
|
+
def host=: (String host) -> void
|
|
120
|
+
attr_accessor audience: String?
|
|
121
|
+
attr_accessor authorization_endpoint: String
|
|
122
|
+
attr_accessor token_endpoint: String
|
|
123
|
+
attr_accessor access_token: String?
|
|
124
|
+
attr_accessor refresh_token: String?
|
|
125
|
+
attr_accessor client_id: String?
|
|
126
|
+
attr_accessor client_secret: String?
|
|
127
|
+
attr_accessor redirect_uri: String?
|
|
128
|
+
attr_accessor on_token_refresh: _TokenRefresh?
|
|
129
|
+
attr_accessor user_agent: String
|
|
130
|
+
attr_accessor open_timeout: Numeric
|
|
131
|
+
attr_accessor read_timeout: Numeric
|
|
132
|
+
attr_accessor write_timeout: Numeric
|
|
133
|
+
attr_accessor keep_alive_timeout: Numeric
|
|
134
|
+
attr_accessor debug_output: IO?
|
|
135
|
+
attr_reader proxy_url: String?
|
|
136
|
+
def proxy_url=: (String? proxy_url) -> void
|
|
137
|
+
attr_accessor max_redirects: Integer
|
|
138
|
+
attr_accessor max_retries: Integer
|
|
139
|
+
attr_accessor max_retry_delay: Numeric
|
|
140
|
+
def self.extended: (Configuration base) -> void
|
|
141
|
+
def default_host: () -> String
|
|
142
|
+
def configure: () { (self) -> void } -> self
|
|
143
|
+
def reset: () -> self
|
|
144
|
+
|
|
145
|
+
private
|
|
146
|
+
|
|
147
|
+
def reset_credentials: () -> void
|
|
148
|
+
def reset_connection: () -> void
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
class Authenticator
|
|
152
|
+
AUTHENTICATION_HEADER: String
|
|
153
|
+
|
|
154
|
+
def header: (Net::HTTPRequest? request) -> Hash[String, String]
|
|
155
|
+
def inspect: () -> String
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
class BearerTokenAuthenticator < Authenticator
|
|
159
|
+
attr_reader access_token: String
|
|
160
|
+
|
|
161
|
+
def initialize: (access_token: String) -> void
|
|
162
|
+
def header: (Net::HTTPRequest? request) -> Hash[String, String]
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
module ClientCredentials
|
|
166
|
+
@token_mutex: Thread::Mutex
|
|
167
|
+
@audience: String?
|
|
168
|
+
|
|
169
|
+
attr_accessor access_token: String?
|
|
170
|
+
attr_accessor refresh_token: String?
|
|
171
|
+
attr_accessor client_id: String?
|
|
172
|
+
attr_accessor client_secret: String?
|
|
173
|
+
attr_accessor redirect_uri: String?
|
|
174
|
+
attr_writer audience: String?
|
|
175
|
+
attr_accessor authorization_endpoint: String
|
|
176
|
+
attr_accessor token_endpoint: String
|
|
177
|
+
attr_accessor on_token_refresh: _TokenRefresh?
|
|
178
|
+
|
|
179
|
+
def audience: () -> String
|
|
180
|
+
def host: () -> String
|
|
181
|
+
|
|
182
|
+
private
|
|
183
|
+
|
|
184
|
+
def connection: () -> Connection
|
|
185
|
+
def request_builder: () -> RequestBuilder
|
|
186
|
+
def redirect_handler: () -> RedirectHandler
|
|
187
|
+
def retry_handler: () -> RetryHandler
|
|
188
|
+
def initialize_credentials: (**untyped credentials) -> void
|
|
189
|
+
def authenticator_for: (String? access_token) -> Authenticator
|
|
190
|
+
def refreshable?: () -> bool
|
|
191
|
+
def exclusively: [T] () { () -> T } -> T
|
|
192
|
+
def renewed_access_token: (String? stale) -> String?
|
|
193
|
+
def refresh: () -> SimpleOAuth::OAuth2::Token
|
|
194
|
+
def store_token: (SimpleOAuth::OAuth2::Token token) -> SimpleOAuth::OAuth2::Token
|
|
195
|
+
def oauth_client: () -> SimpleOAuth::OAuth2::Client
|
|
196
|
+
def request_token: (SimpleOAuth::OAuth2::Request oauth_request) -> SimpleOAuth::OAuth2::Token
|
|
197
|
+
def perform_token_request: (SimpleOAuth::OAuth2::Request oauth_request) -> Net::HTTPResponse
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
class Resource
|
|
201
|
+
include DeepCopy
|
|
202
|
+
extend Declaration
|
|
203
|
+
|
|
204
|
+
module Declaration : Class
|
|
205
|
+
@attribute_names: Array[Symbol]?
|
|
206
|
+
|
|
207
|
+
def attribute: (Symbol name, *(String | Symbol) keys) -> Symbol
|
|
208
|
+
def predicate: (Symbol name, *(String | Symbol) keys) -> Symbol
|
|
209
|
+
def time_attribute: (Symbol name, *(String | Symbol) keys) -> Symbol
|
|
210
|
+
def resource_attribute: (Symbol name, singleton(Resource) resource_class, *(String | Symbol) keys) -> Symbol
|
|
211
|
+
def resource_list_attribute: (Symbol name, singleton(Resource) resource_class, *(String | Symbol) keys) -> Symbol
|
|
212
|
+
def attribute_names: () -> Array[Symbol]
|
|
213
|
+
|
|
214
|
+
private
|
|
215
|
+
|
|
216
|
+
def record_attribute: (Symbol name) -> Symbol
|
|
217
|
+
def keys_for: (Symbol name, Array[String | Symbol] keys) -> Array[String]
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
self.@inspect_readers: Array[Symbol]?
|
|
221
|
+
self.@identity_readers: Array[Symbol]?
|
|
222
|
+
|
|
223
|
+
attr_reader attributes: Hash[String, untyped]
|
|
224
|
+
|
|
225
|
+
def self.list: (Array[Hash[String | Symbol, untyped]] list) -> Array[instance]
|
|
226
|
+
def self.inspect_with: (*Symbol readers) -> Array[Symbol]
|
|
227
|
+
def self.inspect_readers: () -> Array[Symbol]
|
|
228
|
+
def self.identified_by: (*Symbol readers) -> Array[Symbol]
|
|
229
|
+
def self.identity_readers: () -> Array[Symbol]
|
|
230
|
+
def initialize: (Hash[String | Symbol, untyped] attributes) -> void
|
|
231
|
+
def []: (String | Symbol key) -> untyped
|
|
232
|
+
def deconstruct_keys: (Array[Symbol]? keys) -> Hash[Symbol, untyped]
|
|
233
|
+
def to_h: () -> Hash[String, untyped]
|
|
234
|
+
def inspect: () -> String
|
|
235
|
+
def to_s: () -> String
|
|
236
|
+
def identity: () -> (Array[untyped] | Hash[String, untyped])
|
|
237
|
+
def ==: (untyped other) -> bool
|
|
238
|
+
def eql?: (untyped other) -> bool
|
|
239
|
+
def hash: () -> Integer
|
|
240
|
+
|
|
241
|
+
private
|
|
242
|
+
|
|
243
|
+
def inspect_values: () -> Hash[Symbol, untyped]
|
|
244
|
+
def value_of: (Array[String] keys) -> untyped
|
|
245
|
+
def parse_time: (untyped value) -> Time
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
module DeepCopy
|
|
249
|
+
private
|
|
250
|
+
|
|
251
|
+
def deep_freeze: (untyped value) -> untyped
|
|
252
|
+
def deep_dup: (untyped value) -> untyped
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
class Vehicle < Resource
|
|
256
|
+
def id: () -> Integer?
|
|
257
|
+
def vehicle_id: () -> Integer?
|
|
258
|
+
def vin: () -> String?
|
|
259
|
+
def display_name: () -> String?
|
|
260
|
+
def state: () -> String?
|
|
261
|
+
def access_type: () -> String?
|
|
262
|
+
def api_version: () -> Integer?
|
|
263
|
+
def in_service?: () -> bool
|
|
264
|
+
def online?: () -> bool
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
class VehicleData < Vehicle
|
|
268
|
+
def charge_state: () -> ChargeState?
|
|
269
|
+
def climate_state: () -> ClimateState?
|
|
270
|
+
def drive_state: () -> DriveState?
|
|
271
|
+
def gui_settings: () -> GUISettings?
|
|
272
|
+
def vehicle_config: () -> VehicleConfig?
|
|
273
|
+
def vehicle_state: () -> VehicleState?
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
class ChargeState < Resource
|
|
277
|
+
def battery_level: () -> Integer?
|
|
278
|
+
def usable_battery_level: () -> Integer?
|
|
279
|
+
def battery_range: () -> Float?
|
|
280
|
+
def charge_limit: () -> Integer?
|
|
281
|
+
def charging_state: () -> String?
|
|
282
|
+
def charge_amps: () -> Integer?
|
|
283
|
+
def charge_rate: () -> Float?
|
|
284
|
+
def charger_power: () -> Integer?
|
|
285
|
+
def minutes_to_full_charge: () -> Integer?
|
|
286
|
+
def charge_port_latch: () -> String?
|
|
287
|
+
def charge_port_door_open?: () -> bool
|
|
288
|
+
def timestamp: () -> Time?
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
class ClimateState < Resource
|
|
292
|
+
def inside_temp: () -> Float?
|
|
293
|
+
def outside_temp: () -> Float?
|
|
294
|
+
def driver_temp_setting: () -> Float?
|
|
295
|
+
def passenger_temp_setting: () -> Float?
|
|
296
|
+
def fan_status: () -> Integer?
|
|
297
|
+
def climate_keeper_mode: () -> String?
|
|
298
|
+
def seat_heater_left: () -> Integer?
|
|
299
|
+
def seat_heater_right: () -> Integer?
|
|
300
|
+
def climate_on?: () -> bool
|
|
301
|
+
def preconditioning?: () -> bool
|
|
302
|
+
def front_defroster_on?: () -> bool
|
|
303
|
+
def rear_defroster_on?: () -> bool
|
|
304
|
+
def timestamp: () -> Time?
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
class DriveState < Resource
|
|
308
|
+
def latitude: () -> Float?
|
|
309
|
+
def longitude: () -> Float?
|
|
310
|
+
def heading: () -> Integer?
|
|
311
|
+
def speed: () -> Integer?
|
|
312
|
+
def power: () -> Integer?
|
|
313
|
+
def shift_state: () -> String?
|
|
314
|
+
def timestamp: () -> Time?
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
class VehicleState < Resource
|
|
318
|
+
def car_version: () -> String?
|
|
319
|
+
def odometer: () -> Float?
|
|
320
|
+
def vehicle_name: () -> String?
|
|
321
|
+
def sun_roof_state: () -> String?
|
|
322
|
+
def locked?: () -> bool
|
|
323
|
+
def sentry_mode?: () -> bool
|
|
324
|
+
def valet_mode?: () -> bool
|
|
325
|
+
def user_present?: () -> bool
|
|
326
|
+
def remote_start?: () -> bool
|
|
327
|
+
def timestamp: () -> Time?
|
|
328
|
+
def frunk_open?: () -> bool
|
|
329
|
+
def trunk_open?: () -> bool
|
|
330
|
+
|
|
331
|
+
private
|
|
332
|
+
|
|
333
|
+
def open?: (Integer? value) -> bool
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
class VehicleConfig < Resource
|
|
337
|
+
def car_type: () -> String?
|
|
338
|
+
def trim_badging: () -> String?
|
|
339
|
+
def exterior_color: () -> String?
|
|
340
|
+
def wheel_type: () -> String?
|
|
341
|
+
def charge_port_type: () -> String?
|
|
342
|
+
def sun_roof_installed: () -> Integer?
|
|
343
|
+
def can_actuate_trunks?: () -> bool
|
|
344
|
+
def power_liftgate?: () -> bool
|
|
345
|
+
def right_hand_drive?: () -> bool
|
|
346
|
+
def timestamp: () -> Time?
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
class GUISettings < Resource
|
|
350
|
+
def distance_units: () -> String?
|
|
351
|
+
def temperature_units: () -> String?
|
|
352
|
+
def charge_rate_units: () -> String?
|
|
353
|
+
def range_display: () -> String?
|
|
354
|
+
def twenty_four_hour_time?: () -> bool
|
|
355
|
+
def timestamp: () -> Time?
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
class User < Resource
|
|
359
|
+
def email: () -> String?
|
|
360
|
+
def full_name: () -> String?
|
|
361
|
+
def profile_image_url: () -> String?
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
class Region < Resource
|
|
365
|
+
def region: () -> String?
|
|
366
|
+
def fleet_api_base_url: () -> String?
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
class ChargingSite < Resource
|
|
370
|
+
def name: () -> String?
|
|
371
|
+
def type: () -> String?
|
|
372
|
+
def distance_miles: () -> Float?
|
|
373
|
+
def available_stalls: () -> Integer?
|
|
374
|
+
def total_stalls: () -> Integer?
|
|
375
|
+
def location: () -> Hash[String, Float]?
|
|
376
|
+
def site_closed?: () -> bool
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
class NearbyChargingSites < Resource
|
|
380
|
+
def superchargers: () -> Array[ChargingSite]
|
|
381
|
+
def destination_charging: () -> Array[ChargingSite]
|
|
382
|
+
def timestamp: () -> Time?
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
interface _Requests
|
|
386
|
+
def get: (String path, ?Hash[Symbol | String, untyped] params, ?headers: Hash[String, String]) -> String
|
|
387
|
+
def delete: (String path, ?Hash[Symbol | String, untyped] params, ?headers: Hash[String, String]) -> String
|
|
388
|
+
def post: (String path, ?request_body body, ?headers: Hash[String, String]) -> String
|
|
389
|
+
def put: (String path, ?request_body body, ?headers: Hash[String, String]) -> String
|
|
390
|
+
def patch: (String path, ?request_body body, ?headers: Hash[String, String]) -> String
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
module Identifiers
|
|
394
|
+
private
|
|
395
|
+
|
|
396
|
+
def tag_of: (vehicle_identifier vehicle) -> (String | Integer)?
|
|
397
|
+
end
|
|
398
|
+
|
|
399
|
+
module API : Object, _Requests, ClientCredentials
|
|
400
|
+
include AlertEndpoints
|
|
401
|
+
include ChargingEndpoints
|
|
402
|
+
include ClimateEndpoints
|
|
403
|
+
include ClosureEndpoints
|
|
404
|
+
include CommandEndpoints
|
|
405
|
+
include MediaEndpoints
|
|
406
|
+
include NavigationEndpoints
|
|
407
|
+
include OAuthEndpoints
|
|
408
|
+
include PartnerEndpoints
|
|
409
|
+
include SecurityEndpoints
|
|
410
|
+
include SoftwareEndpoints
|
|
411
|
+
include UserEndpoints
|
|
412
|
+
include VehicleEndpoints
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
module API::CommandEndpoints : Object, _Requests
|
|
416
|
+
include Identifiers
|
|
417
|
+
include JSONParsing
|
|
418
|
+
include PathEscaping
|
|
419
|
+
|
|
420
|
+
def command: (vehicle_identifier vehicle, String | Symbol name, **untyped params) -> true
|
|
421
|
+
|
|
422
|
+
private
|
|
423
|
+
|
|
424
|
+
def number_of: (Hash[Symbol, Integer] options, Symbol | String name, String kind) -> Integer
|
|
425
|
+
end
|
|
426
|
+
|
|
427
|
+
module API::AlertEndpoints : Object, API::CommandEndpoints
|
|
428
|
+
def honk_horn: (vehicle_identifier vehicle) -> true
|
|
429
|
+
def flash_lights: (vehicle_identifier vehicle) -> true
|
|
430
|
+
end
|
|
431
|
+
|
|
432
|
+
module API::ChargingEndpoints : Object, API::CommandEndpoints
|
|
433
|
+
def open_charge_port: (vehicle_identifier vehicle) -> true
|
|
434
|
+
def close_charge_port: (vehicle_identifier vehicle) -> true
|
|
435
|
+
def start_charging: (vehicle_identifier vehicle) -> true
|
|
436
|
+
def stop_charging: (vehicle_identifier vehicle) -> true
|
|
437
|
+
def set_charge_limit: (vehicle_identifier vehicle, Integer percent) -> true
|
|
438
|
+
def set_charging_amps: (vehicle_identifier vehicle, Integer amps) -> true
|
|
439
|
+
def charge_to_standard_range: (vehicle_identifier vehicle) -> true
|
|
440
|
+
def charge_to_max_range: (vehicle_identifier vehicle) -> true
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
module API::ClimateEndpoints : Object, API::CommandEndpoints
|
|
444
|
+
SEATS: Hash[Symbol, Integer]
|
|
445
|
+
CLIMATE_KEEPER_MODES: Hash[Symbol, Integer]
|
|
446
|
+
|
|
447
|
+
def start_climate: (vehicle_identifier vehicle) -> true
|
|
448
|
+
def stop_climate: (vehicle_identifier vehicle) -> true
|
|
449
|
+
def set_temperature: (vehicle_identifier vehicle, Numeric driver, ?Numeric passenger) -> true
|
|
450
|
+
def set_max_defrost: (vehicle_identifier vehicle, on: bool) -> true
|
|
451
|
+
def set_seat_heater: (vehicle_identifier vehicle, Symbol | String seat, Integer level) -> true
|
|
452
|
+
def set_seat_cooler: (vehicle_identifier vehicle, Symbol | String seat, Integer level) -> true
|
|
453
|
+
def set_steering_wheel_heater: (vehicle_identifier vehicle, on: bool) -> true
|
|
454
|
+
def set_climate_keeper_mode: (vehicle_identifier vehicle, Symbol | String mode) -> true
|
|
455
|
+
def set_bioweapon_mode: (vehicle_identifier vehicle, on: bool, ?manual_override: bool) -> true
|
|
456
|
+
def set_cabin_overheat_protection: (vehicle_identifier vehicle, on: bool, ?fan_only: bool) -> true
|
|
457
|
+
end
|
|
458
|
+
|
|
459
|
+
module API::ClosureEndpoints : Object, API::CommandEndpoints
|
|
460
|
+
def lock_doors: (vehicle_identifier vehicle) -> true
|
|
461
|
+
def unlock_doors: (vehicle_identifier vehicle) -> true
|
|
462
|
+
def actuate_trunk: (vehicle_identifier vehicle) -> true
|
|
463
|
+
def open_frunk: (vehicle_identifier vehicle) -> true
|
|
464
|
+
def vent_windows: (vehicle_identifier vehicle) -> true
|
|
465
|
+
def close_windows: (vehicle_identifier vehicle, ?latitude: Numeric, ?longitude: Numeric) -> true
|
|
466
|
+
def vent_sunroof: (vehicle_identifier vehicle) -> true
|
|
467
|
+
def close_sunroof: (vehicle_identifier vehicle) -> true
|
|
468
|
+
def trigger_homelink: (vehicle_identifier vehicle, latitude: Numeric, longitude: Numeric) -> true
|
|
469
|
+
end
|
|
470
|
+
|
|
471
|
+
module API::MediaEndpoints : Object, API::CommandEndpoints
|
|
472
|
+
def toggle_playback: (vehicle_identifier vehicle) -> true
|
|
473
|
+
def next_track: (vehicle_identifier vehicle) -> true
|
|
474
|
+
def previous_track: (vehicle_identifier vehicle) -> true
|
|
475
|
+
def next_favorite: (vehicle_identifier vehicle) -> true
|
|
476
|
+
def previous_favorite: (vehicle_identifier vehicle) -> true
|
|
477
|
+
def volume_up: (vehicle_identifier vehicle) -> true
|
|
478
|
+
def volume_down: (vehicle_identifier vehicle) -> true
|
|
479
|
+
def set_volume: (vehicle_identifier vehicle, Numeric volume) -> true
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
module API::NavigationEndpoints : Object, API::CommandEndpoints
|
|
483
|
+
NAVIGATION_REQUEST_TYPE: String
|
|
484
|
+
NAVIGATION_REQUEST_TEXT: String
|
|
485
|
+
|
|
486
|
+
def navigate_to: (vehicle_identifier vehicle, String destination, ?locale: String) -> true
|
|
487
|
+
def navigate_to_coordinates: (vehicle_identifier vehicle, Numeric latitude, Numeric longitude, ?order: Integer) -> true
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
module API::OAuthEndpoints : Object, ClientCredentials
|
|
491
|
+
SCOPES: Array[String]
|
|
492
|
+
PARTNER_SCOPES: Array[String]
|
|
493
|
+
|
|
494
|
+
def authorization_url: (state: String, ?pkce: SimpleOAuth::OAuth2::PKCE?, ?scope: scope, **String? params) -> String
|
|
495
|
+
def exchange_code: (String code, ?code_verifier: String?) -> SimpleOAuth::OAuth2::Token
|
|
496
|
+
def refresh_access_token: () -> SimpleOAuth::OAuth2::Token
|
|
497
|
+
def partner_token: (?scope: scope) -> SimpleOAuth::OAuth2::Token
|
|
498
|
+
|
|
499
|
+
private
|
|
500
|
+
|
|
501
|
+
def required_redirect_uri: () -> String
|
|
502
|
+
end
|
|
503
|
+
|
|
504
|
+
module API::PartnerEndpoints : Object, _Requests, API::OAuthEndpoints
|
|
505
|
+
include JSONParsing
|
|
506
|
+
|
|
507
|
+
def register_partner: (String domain) -> Hash[String, untyped]
|
|
508
|
+
def partner_public_key: (String domain) -> String
|
|
509
|
+
|
|
510
|
+
private
|
|
511
|
+
|
|
512
|
+
def partner_headers: () -> Hash[String, String]
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
module API::SecurityEndpoints : Object, API::CommandEndpoints
|
|
516
|
+
def set_sentry_mode: (vehicle_identifier vehicle, on: bool) -> true
|
|
517
|
+
def set_valet_mode: (vehicle_identifier vehicle, on: bool, ?password: String?) -> true
|
|
518
|
+
def reset_valet_pin: (vehicle_identifier vehicle) -> true
|
|
519
|
+
def remote_start: (vehicle_identifier vehicle) -> true
|
|
520
|
+
def set_speed_limit: (vehicle_identifier vehicle, Numeric mph) -> true
|
|
521
|
+
def activate_speed_limit: (vehicle_identifier vehicle, String pin) -> true
|
|
522
|
+
def deactivate_speed_limit: (vehicle_identifier vehicle, String pin) -> true
|
|
523
|
+
def clear_speed_limit_pin: (vehicle_identifier vehicle, String pin) -> true
|
|
524
|
+
end
|
|
525
|
+
|
|
526
|
+
module API::SoftwareEndpoints : Object, API::CommandEndpoints
|
|
527
|
+
def schedule_software_update: (vehicle_identifier vehicle, ?offset: Integer) -> true
|
|
528
|
+
def cancel_software_update: (vehicle_identifier vehicle) -> true
|
|
529
|
+
end
|
|
530
|
+
|
|
531
|
+
module API::UserEndpoints : Object, _Requests
|
|
532
|
+
include JSONParsing
|
|
533
|
+
|
|
534
|
+
def me: () -> User
|
|
535
|
+
def region: () -> Region
|
|
536
|
+
end
|
|
537
|
+
|
|
538
|
+
module API::VehicleEndpoints : Object, _Requests
|
|
539
|
+
include Identifiers
|
|
540
|
+
include JSONParsing
|
|
541
|
+
include PathEscaping
|
|
542
|
+
|
|
543
|
+
DEFAULT_WAKE_INTERVAL: Numeric
|
|
544
|
+
|
|
545
|
+
def vehicles: (?page: Integer?, ?per_page: Integer?) -> Array[Vehicle]
|
|
546
|
+
def vehicle: (vehicle_identifier vehicle) -> Vehicle
|
|
547
|
+
def vehicle_data: (vehicle_identifier vehicle, ?endpoints: (Array[String | Symbol] | String | Symbol)?) -> VehicleData
|
|
548
|
+
def wake_up: (vehicle_identifier vehicle, ?timeout: Numeric?, ?interval: Numeric) -> Vehicle
|
|
549
|
+
def nearby_charging_sites: (vehicle_identifier vehicle) -> NearbyChargingSites
|
|
550
|
+
def mobile_enabled?: (vehicle_identifier vehicle) -> bool
|
|
551
|
+
|
|
552
|
+
private
|
|
553
|
+
|
|
554
|
+
def vehicle_path: (vehicle_identifier vehicle) -> String
|
|
555
|
+
def await_online: (Vehicle woken, Numeric deadline, Numeric interval) -> Vehicle
|
|
556
|
+
def monotonic_time: () -> Float
|
|
557
|
+
end
|
|
558
|
+
|
|
559
|
+
class Client
|
|
560
|
+
include API
|
|
561
|
+
extend Forwardable
|
|
562
|
+
include ClientCredentials
|
|
563
|
+
include Idempotence
|
|
564
|
+
include URLValidation
|
|
565
|
+
|
|
566
|
+
private def self.def_delegator: (interned accessor, Symbol method, ?Symbol ali) -> void
|
|
567
|
+
private def self.def_delegators: (interned accessor, *Symbol methods) -> void
|
|
568
|
+
private def self.def_instance_delegator: (interned accessor, Symbol method, ?Symbol ali) -> void
|
|
569
|
+
private def self.def_instance_delegators: (interned accessor, *Symbol methods) -> void
|
|
570
|
+
private def self.delegate: (Hash[Symbol | Array[Symbol], Symbol] hash) -> void
|
|
571
|
+
private def self.instance_delegate: (Hash[Symbol | Array[Symbol], Symbol] hash) -> void
|
|
572
|
+
|
|
573
|
+
@connection: Connection
|
|
574
|
+
@request_builder: RequestBuilder
|
|
575
|
+
@redirect_handler: RedirectHandler
|
|
576
|
+
@retry_handler: RetryHandler
|
|
577
|
+
@response_parser: ResponseParser
|
|
578
|
+
|
|
579
|
+
UNAUTHORIZED_STATUS: String
|
|
580
|
+
|
|
581
|
+
attr_reader host: String
|
|
582
|
+
|
|
583
|
+
def host=: (String host) -> void
|
|
584
|
+
def inspect: () -> String
|
|
585
|
+
def open_timeout: () -> Numeric
|
|
586
|
+
def read_timeout: () -> Numeric
|
|
587
|
+
def write_timeout: () -> Numeric
|
|
588
|
+
def proxy_url: () -> String?
|
|
589
|
+
def debug_output: () -> IO?
|
|
590
|
+
def keep_alive_timeout: () -> Numeric
|
|
591
|
+
def ca_file: () -> String?
|
|
592
|
+
def debug_output=: (IO? debug_output) -> void
|
|
593
|
+
def keep_alive_timeout=: (Numeric keep_alive_timeout) -> void
|
|
594
|
+
def max_redirects: () -> Integer
|
|
595
|
+
def max_redirects=: (Integer max_redirects) -> void
|
|
596
|
+
def open_timeout=: (Numeric open_timeout) -> void
|
|
597
|
+
def read_timeout=: (Numeric read_timeout) -> void
|
|
598
|
+
def write_timeout=: (Numeric write_timeout) -> void
|
|
599
|
+
def proxy_url=: (String? proxy_url) -> void
|
|
600
|
+
def ca_file=: (String? ca_file) -> void
|
|
601
|
+
def max_retries: () -> Integer
|
|
602
|
+
def max_retries=: (Integer max_retries) -> void
|
|
603
|
+
def max_retry_delay: () -> Numeric
|
|
604
|
+
def max_retry_delay=: (Numeric max_retry_delay) -> void
|
|
605
|
+
def user_agent: () -> String
|
|
606
|
+
def user_agent=: (String user_agent) -> void
|
|
607
|
+
|
|
608
|
+
def self.new: (?host: String, ?access_token: String?, ?refresh_token: String?, ?client_id: String?, ?client_secret: String?, ?redirect_uri: String?, ?audience: String?, ?authorization_endpoint: String, ?token_endpoint: String, ?on_token_refresh: _TokenRefresh?, ?user_agent: String, ?open_timeout: Numeric, ?read_timeout: Numeric, ?write_timeout: Numeric, ?debug_output: IO?, ?proxy_url: String?, ?keep_alive_timeout: Numeric, ?max_redirects: Integer, ?ca_file: String?, ?max_retries: Integer, ?max_retry_delay: Numeric) -> Client
|
|
609
|
+
| [T] (?host: String, ?access_token: String?, ?refresh_token: String?, ?client_id: String?, ?client_secret: String?, ?redirect_uri: String?, ?audience: String?, ?authorization_endpoint: String, ?token_endpoint: String, ?on_token_refresh: _TokenRefresh?, ?user_agent: String, ?open_timeout: Numeric, ?read_timeout: Numeric, ?write_timeout: Numeric, ?debug_output: IO?, ?proxy_url: String?, ?keep_alive_timeout: Numeric, ?max_redirects: Integer, ?ca_file: String?, ?max_retries: Integer, ?max_retry_delay: Numeric) { (Client client) -> T } -> T
|
|
610
|
+
def initialize: (?host: String, ?access_token: String?, ?refresh_token: String?, ?client_id: String?, ?client_secret: String?, ?redirect_uri: String?, ?audience: String?, ?authorization_endpoint: String, ?token_endpoint: String, ?on_token_refresh: _TokenRefresh?, ?user_agent: String, ?open_timeout: Numeric, ?read_timeout: Numeric, ?write_timeout: Numeric, ?debug_output: IO?, ?proxy_url: String?, ?keep_alive_timeout: Numeric, ?max_redirects: Integer, ?ca_file: String?, ?max_retries: Integer, ?max_retry_delay: Numeric) -> void
|
|
611
|
+
def close: () -> self
|
|
612
|
+
def get: (String path, ?Hash[Symbol | String, untyped] params, ?headers: Hash[String, String]) -> String
|
|
613
|
+
def delete: (String path, ?Hash[Symbol | String, untyped] params, ?headers: Hash[String, String]) -> String
|
|
614
|
+
def post: (String path, ?request_body body, ?headers: Hash[String, String]) -> String
|
|
615
|
+
def put: (String path, ?request_body body, ?headers: Hash[String, String]) -> String
|
|
616
|
+
def patch: (String path, ?request_body body, ?headers: Hash[String, String]) -> String
|
|
617
|
+
|
|
618
|
+
private
|
|
619
|
+
|
|
620
|
+
attr_reader connection: Connection
|
|
621
|
+
attr_reader request_builder: RequestBuilder
|
|
622
|
+
attr_reader redirect_handler: RedirectHandler
|
|
623
|
+
attr_reader retry_handler: RetryHandler
|
|
624
|
+
|
|
625
|
+
def execute_request: (Symbol http_method, String path, headers: Hash[String, String], ?params: Hash[Symbol | String, untyped], ?body: request_body?) -> String
|
|
626
|
+
def perform: (access_token: String?, http_method: Symbol, uri: URI::Generic, params: Hash[Symbol | String, untyped], body: request_body?, headers: Hash[String, String]) -> Net::HTTPResponse
|
|
627
|
+
end
|
|
628
|
+
|
|
629
|
+
class Error < StandardError
|
|
630
|
+
end
|
|
631
|
+
|
|
632
|
+
class HTTPError < Error
|
|
633
|
+
include RetryAfter
|
|
634
|
+
|
|
635
|
+
attr_reader response: Net::HTTPResponse
|
|
636
|
+
attr_reader code: Integer
|
|
637
|
+
|
|
638
|
+
def initialize: (response: Net::HTTPResponse) -> void
|
|
639
|
+
def retry_after: () -> Integer?
|
|
640
|
+
|
|
641
|
+
private
|
|
642
|
+
|
|
643
|
+
def error_message: (Net::HTTPResponse response) -> String
|
|
644
|
+
def described_error: (String body) -> String?
|
|
645
|
+
end
|
|
646
|
+
|
|
647
|
+
class ClientError < HTTPError
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
class ServerError < HTTPError
|
|
651
|
+
end
|
|
652
|
+
|
|
653
|
+
class BadRequest < ClientError
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
class Unauthorized < ClientError
|
|
657
|
+
end
|
|
658
|
+
|
|
659
|
+
class PaymentRequired < ClientError
|
|
660
|
+
end
|
|
661
|
+
|
|
662
|
+
class Forbidden < ClientError
|
|
663
|
+
end
|
|
664
|
+
|
|
665
|
+
class NotFound < ClientError
|
|
666
|
+
end
|
|
667
|
+
|
|
668
|
+
class MethodNotAllowed < ClientError
|
|
669
|
+
end
|
|
670
|
+
|
|
671
|
+
class NotAcceptable < ClientError
|
|
672
|
+
end
|
|
673
|
+
|
|
674
|
+
class RequestTimeout < ClientError
|
|
675
|
+
end
|
|
676
|
+
|
|
677
|
+
class PreconditionFailed < ClientError
|
|
678
|
+
end
|
|
679
|
+
|
|
680
|
+
class MisdirectedRequest < ClientError
|
|
681
|
+
end
|
|
682
|
+
|
|
683
|
+
class UnprocessableContent < ClientError
|
|
684
|
+
end
|
|
685
|
+
|
|
686
|
+
class Locked < ClientError
|
|
687
|
+
end
|
|
688
|
+
|
|
689
|
+
class TooManyRequests < ClientError
|
|
690
|
+
end
|
|
691
|
+
|
|
692
|
+
class UnavailableForLegalReasons < ClientError
|
|
693
|
+
end
|
|
694
|
+
|
|
695
|
+
class InternalServerError < ServerError
|
|
696
|
+
end
|
|
697
|
+
|
|
698
|
+
class BadGateway < ServerError
|
|
699
|
+
end
|
|
700
|
+
|
|
701
|
+
class ServiceUnavailable < ServerError
|
|
702
|
+
end
|
|
703
|
+
|
|
704
|
+
class GatewayTimeout < ServerError
|
|
705
|
+
end
|
|
706
|
+
|
|
707
|
+
class DeviceUnexpectedResponse < ServerError
|
|
708
|
+
end
|
|
709
|
+
|
|
710
|
+
class TooManyRedirects < Error
|
|
711
|
+
end
|
|
712
|
+
|
|
713
|
+
class NetworkError < Error
|
|
714
|
+
WRAPPED: Array[singleton(IOError) | singleton(Net::HTTPBadResponse) | singleton(Net::ProtocolError) | singleton(OpenSSL::SSL::SSLError) | singleton(SocketError) | singleton(SystemCallError) | singleton(Timeout::Error) | singleton(Zlib::Error)]
|
|
715
|
+
end
|
|
716
|
+
|
|
717
|
+
class InvalidResponse < Error
|
|
718
|
+
attr_reader body: String
|
|
719
|
+
|
|
720
|
+
def initialize: (body: String, ?message: String) -> void
|
|
721
|
+
end
|
|
722
|
+
|
|
723
|
+
class CommandFailed < Error
|
|
724
|
+
attr_reader command: String
|
|
725
|
+
attr_reader reason: String
|
|
726
|
+
|
|
727
|
+
def initialize: (command: String, reason: String?) -> void
|
|
728
|
+
end
|
|
729
|
+
|
|
730
|
+
class VehicleAsleep < Error
|
|
731
|
+
attr_reader vehicle: Vehicle
|
|
732
|
+
|
|
733
|
+
def initialize: (vehicle: Vehicle) -> void
|
|
734
|
+
end
|
|
735
|
+
|
|
736
|
+
class OAuthError < Error
|
|
737
|
+
attr_reader code: String?
|
|
738
|
+
attr_reader description: String?
|
|
739
|
+
attr_reader status: Integer?
|
|
740
|
+
|
|
741
|
+
def initialize: (?code: String?, ?description: String?, ?status: Integer?) -> void
|
|
742
|
+
end
|
|
743
|
+
|
|
744
|
+
module PathEscaping
|
|
745
|
+
private
|
|
746
|
+
|
|
747
|
+
def escape: (untyped value) -> String
|
|
748
|
+
end
|
|
749
|
+
|
|
750
|
+
module JSONParsing
|
|
751
|
+
SHAPE_ERRORS: Array[singleton(KeyError) | singleton(NoMethodError) | singleton(TypeError)]
|
|
752
|
+
|
|
753
|
+
private
|
|
754
|
+
|
|
755
|
+
def parse_response: (String body) -> untyped
|
|
756
|
+
| [T] (String body) { (untyped response) -> T } -> T
|
|
757
|
+
end
|
|
758
|
+
|
|
759
|
+
class RedactedOutput
|
|
760
|
+
REDACTION: String
|
|
761
|
+
CREDENTIALS: Array[Regexp]
|
|
762
|
+
READ: String
|
|
763
|
+
READING: String
|
|
764
|
+
DONE: String
|
|
765
|
+
CHUNK_END: String
|
|
766
|
+
|
|
767
|
+
@output: IO
|
|
768
|
+
@lines: Array[String]?
|
|
769
|
+
@body: String?
|
|
770
|
+
@reading: bool?
|
|
771
|
+
|
|
772
|
+
attr_reader output: IO
|
|
773
|
+
|
|
774
|
+
def initialize: (IO output) -> void
|
|
775
|
+
def <<: (String string) -> self
|
|
776
|
+
|
|
777
|
+
private
|
|
778
|
+
|
|
779
|
+
def hold: (Array[String] lines, String string) -> void
|
|
780
|
+
def read: (Array[String] lines, String string) -> void
|
|
781
|
+
def flush: (Array[String] lines) -> void
|
|
782
|
+
def write: (String string) -> void
|
|
783
|
+
end
|
|
784
|
+
|
|
785
|
+
class ConnectionPool
|
|
786
|
+
include Idempotence
|
|
787
|
+
|
|
788
|
+
@connections: Hash[untyped, untyped]
|
|
789
|
+
@mutex: Thread::Mutex
|
|
790
|
+
|
|
791
|
+
def initialize: () -> void
|
|
792
|
+
def checkout: (request: Net::HTTPRequest, settings: untyped, keep_alive_timeout: Numeric) { () -> Net::HTTP } -> Net::HTTP
|
|
793
|
+
def checkin: (request: Net::HTTPRequest, http_client: Net::HTTP, settings: untyped, keep_alive_timeout: Numeric) -> void
|
|
794
|
+
def discard: (Net::HTTP? http_client) -> void
|
|
795
|
+
def take: (untyped key, untyped settings) -> Net::HTTP?
|
|
796
|
+
def store: (untyped key, Net::HTTP http_client, untyped settings) -> bool
|
|
797
|
+
def close: () -> self
|
|
798
|
+
|
|
799
|
+
private
|
|
800
|
+
|
|
801
|
+
def delete: (untyped key) -> Net::HTTP?
|
|
802
|
+
def opened_here?: (Integer? pid) -> bool
|
|
803
|
+
def keep_alive?: (Net::HTTPRequest request, Numeric keep_alive_timeout) -> bool
|
|
804
|
+
def pool_key: (Net::HTTPRequest request) -> [String?, String?, Integer?]
|
|
805
|
+
end
|
|
806
|
+
|
|
807
|
+
class Connection
|
|
808
|
+
include CertificateOptions
|
|
809
|
+
include Settings
|
|
810
|
+
extend Settings::Declaration
|
|
811
|
+
include URLValidation
|
|
812
|
+
|
|
813
|
+
@pool: ConnectionPool
|
|
814
|
+
|
|
815
|
+
DEFAULT_OPEN_TIMEOUT: Numeric
|
|
816
|
+
DEFAULT_READ_TIMEOUT: Numeric
|
|
817
|
+
DEFAULT_WRITE_TIMEOUT: Numeric
|
|
818
|
+
DEFAULT_KEEP_ALIVE_TIMEOUT: Numeric
|
|
819
|
+
|
|
820
|
+
attr_accessor open_timeout: Numeric
|
|
821
|
+
attr_accessor read_timeout: Numeric
|
|
822
|
+
attr_accessor write_timeout: Numeric
|
|
823
|
+
attr_accessor keep_alive_timeout: Numeric
|
|
824
|
+
attr_accessor debug_output: IO?
|
|
825
|
+
attr_reader proxy_url: String?
|
|
826
|
+
attr_reader proxy_uri: URI::Generic?
|
|
827
|
+
|
|
828
|
+
def initialize: (?open_timeout: Numeric, ?read_timeout: Numeric, ?write_timeout: Numeric, ?debug_output: IO?, ?proxy_url: String?, ?keep_alive_timeout: Numeric, ?ca_file: String?) -> void
|
|
829
|
+
def inspect: () -> String
|
|
830
|
+
def perform: (request: Net::HTTPRequest) -> Net::HTTPResponse
|
|
831
|
+
def close: () -> self
|
|
832
|
+
def proxy_url=: (String? proxy_url) -> void
|
|
833
|
+
|
|
834
|
+
private
|
|
835
|
+
|
|
836
|
+
attr_reader pool: ConnectionPool
|
|
837
|
+
|
|
838
|
+
def settings_for: (URI::Generic uri) -> Hash[Symbol, untyped]
|
|
839
|
+
def send_request: (Net::HTTPRequest request, Hash[Symbol, untyped] opened_with) -> Net::HTTPResponse
|
|
840
|
+
def request_on: (Net::HTTP http_client, Net::HTTPRequest request) -> Net::HTTPResponse
|
|
841
|
+
def decode: (String? component) -> String?
|
|
842
|
+
def build_http_client: (URI::Generic uri, Hash[Symbol, untyped] opened_with) -> Net::HTTP
|
|
843
|
+
def proxy_arguments_for: (URI::Generic? proxy) -> [String?, Integer?, String?, String?, bool?]
|
|
844
|
+
def configure_timeouts: (Net::HTTP http_client, Hash[Symbol, untyped] opened_with) -> Net::HTTP
|
|
845
|
+
def configure_http_client: (Net::HTTP http_client, Hash[Symbol, untyped] opened_with) -> Net::HTTP
|
|
846
|
+
end
|
|
847
|
+
|
|
848
|
+
class RedirectHandler
|
|
849
|
+
include Settings
|
|
850
|
+
extend Settings::Declaration
|
|
851
|
+
include URLValidation
|
|
852
|
+
|
|
853
|
+
DEFAULT_MAX_REDIRECTS: Integer
|
|
854
|
+
METHOD_PRESERVING_CODES: Array[Integer]
|
|
855
|
+
|
|
856
|
+
attr_accessor max_redirects: Integer
|
|
857
|
+
attr_reader connection: Connection
|
|
858
|
+
attr_reader request_builder: RequestBuilder
|
|
859
|
+
|
|
860
|
+
def initialize: (?connection: Connection, ?request_builder: RequestBuilder, ?max_redirects: Integer) -> void
|
|
861
|
+
def handle: (response: Net::HTTPResponse, request: Net::HTTPRequest, ?authenticator: Authenticator, ?body: request_body?, ?headers: Hash[String, String], ?redirect_count: Integer) -> Net::HTTPResponse
|
|
862
|
+
|
|
863
|
+
private
|
|
864
|
+
|
|
865
|
+
def follow: (response: Net::HTTPResponse, request: Net::HTTPRequest, uri: URI::HTTP, authenticator: Authenticator, body: request_body?, headers: Hash[String, String], redirect_count: Integer) -> Net::HTTPResponse
|
|
866
|
+
def replays_body?: (Integer response_code, request_body? body) -> bool
|
|
867
|
+
def method_preserving?: (Integer response_code) -> bool
|
|
868
|
+
def build_new_uri: (Net::HTTPResponse response, Net::HTTPRequest request) -> URI::HTTP?
|
|
869
|
+
def build_request: (request: Net::HTTPRequest, uri: URI::Generic, response_code: Integer, authenticator: Authenticator, body: request_body?, headers: Hash[String, String]) -> Net::HTTPRequest
|
|
870
|
+
end
|
|
871
|
+
|
|
872
|
+
class RequestBuilder
|
|
873
|
+
DEFAULT_USER_AGENT: String
|
|
874
|
+
APPLICATION_JSON: String
|
|
875
|
+
HTTP_METHODS: Hash[Symbol, singleton(Net::HTTP::Get) | singleton(Net::HTTP::Post) | singleton(Net::HTTP::Put) | singleton(Net::HTTP::Patch) | singleton(Net::HTTP::Delete)]
|
|
876
|
+
|
|
877
|
+
attr_accessor user_agent: String
|
|
878
|
+
|
|
879
|
+
def initialize: (?user_agent: String) -> void
|
|
880
|
+
def build: (http_method: Symbol, uri: URI::Generic, ?params: Hash[Symbol | String, untyped], ?body: request_body?, ?headers: Hash[String, String], ?authenticator: Authenticator) -> Net::HTTPRequest
|
|
881
|
+
|
|
882
|
+
private
|
|
883
|
+
|
|
884
|
+
def create_request: (http_method: Symbol, uri: URI::Generic, params: Hash[Symbol | String, untyped]) -> Net::HTTPRequest
|
|
885
|
+
def add_query_params: (URI::Generic uri, Hash[Symbol | String, untyped] params) -> URI::Generic
|
|
886
|
+
def add_headers: (request: Net::HTTPRequest, headers: Hash[String, String]) -> void
|
|
887
|
+
def add_body: (request: Net::HTTPRequest, body: request_body?) -> void
|
|
888
|
+
def add_authentication: (request: Net::HTTPRequest, authenticator: Authenticator) -> void
|
|
889
|
+
end
|
|
890
|
+
|
|
891
|
+
class ResponseParser
|
|
892
|
+
ERROR_MAP: Hash[Integer, singleton(HTTPError)]
|
|
893
|
+
STATUS_CLASS_ERRORS: Hash[Integer, singleton(HTTPError)]
|
|
894
|
+
|
|
895
|
+
def parse: (response: Net::HTTPResponse) -> String
|
|
896
|
+
|
|
897
|
+
private
|
|
898
|
+
|
|
899
|
+
def error: (Net::HTTPResponse response) -> HTTPError
|
|
900
|
+
def error_class: (Net::HTTPResponse response) -> singleton(HTTPError)
|
|
901
|
+
end
|
|
902
|
+
|
|
903
|
+
module CertificateOptions
|
|
904
|
+
attr_reader ca_file: String?
|
|
905
|
+
|
|
906
|
+
def ca_file=: (String? ca_file) -> void
|
|
907
|
+
|
|
908
|
+
private
|
|
909
|
+
|
|
910
|
+
def validate_ca_file: (String ca_file) -> String
|
|
911
|
+
end
|
|
912
|
+
|
|
913
|
+
module Settings
|
|
914
|
+
module Declaration : Module
|
|
915
|
+
def seconds_setting: (Symbol name) -> Symbol
|
|
916
|
+
def count_setting: (Symbol name) -> Symbol
|
|
917
|
+
def environment_setting: (Symbol name, String variable) -> Array[Symbol]
|
|
918
|
+
end
|
|
919
|
+
|
|
920
|
+
def self.included: (Module base) -> void
|
|
921
|
+
|
|
922
|
+
private
|
|
923
|
+
|
|
924
|
+
def validate_number: (Symbol name, untyped number) -> Numeric
|
|
925
|
+
def validate_count: (Symbol name, untyped count) -> Integer
|
|
926
|
+
end
|
|
927
|
+
|
|
928
|
+
module URLValidation
|
|
929
|
+
private
|
|
930
|
+
|
|
931
|
+
def validate_host: (String host) -> String
|
|
932
|
+
def parse_proxy_uri: (String proxy_url) -> URI::HTTP
|
|
933
|
+
def http_url?: (untyped host) -> bool
|
|
934
|
+
def build_uri: (String host, String path) -> URI::Generic
|
|
935
|
+
def same_origin?: (String | URI::Generic url, String | URI::Generic other) -> bool
|
|
936
|
+
def on_host?: (URI::Generic uri, String | URI::Generic host) -> bool
|
|
937
|
+
def origin: (String | URI::Generic url) -> [String?, String?, Integer?]
|
|
938
|
+
def redact: (String? url) -> String?
|
|
939
|
+
end
|
|
940
|
+
|
|
941
|
+
module RetryAfter
|
|
942
|
+
DELTA_SECONDS: Regexp
|
|
943
|
+
|
|
944
|
+
private
|
|
945
|
+
|
|
946
|
+
def retry_after_of: (Net::HTTPResponse response) -> Integer?
|
|
947
|
+
end
|
|
948
|
+
|
|
949
|
+
module Idempotence
|
|
950
|
+
SAFE_METHODS: Array[String]
|
|
951
|
+
|
|
952
|
+
private
|
|
953
|
+
|
|
954
|
+
def safe?: (String | Symbol http_method) -> bool
|
|
955
|
+
end
|
|
956
|
+
|
|
957
|
+
interface _Random
|
|
958
|
+
def rand: () -> Float
|
|
959
|
+
end
|
|
960
|
+
|
|
961
|
+
class RetryHandler
|
|
962
|
+
include RetryAfter
|
|
963
|
+
include Settings
|
|
964
|
+
extend Settings::Declaration
|
|
965
|
+
|
|
966
|
+
DEFAULT_MAX_RETRIES: Integer
|
|
967
|
+
DEFAULT_MAX_RETRY_DELAY: Numeric
|
|
968
|
+
THROTTLED_STATUS: Integer
|
|
969
|
+
UNANSWERED_STATUSES: Array[Integer]
|
|
970
|
+
|
|
971
|
+
attr_accessor max_retries: Integer
|
|
972
|
+
attr_accessor max_retry_delay: Numeric
|
|
973
|
+
attr_reader random: _Random
|
|
974
|
+
|
|
975
|
+
def initialize: (?max_retries: Integer, ?max_retry_delay: Numeric, ?random: _Random) -> void
|
|
976
|
+
def handle: (retry_unanswered: bool) { () -> Net::HTTPResponse } -> Net::HTTPResponse
|
|
977
|
+
|
|
978
|
+
private
|
|
979
|
+
|
|
980
|
+
def attempt: (retries: Integer, retry_unanswered: bool) { () -> Net::HTTPResponse } -> Net::HTTPResponse?
|
|
981
|
+
def wait: (Numeric delay) -> nil
|
|
982
|
+
def retry_delay: (response: Net::HTTPResponse, retries: Integer, unanswered: bool) -> Numeric?
|
|
983
|
+
def network_retry_delay: (retries: Integer, allowed: bool) -> Numeric?
|
|
984
|
+
def retryable?: (bool allowed, Integer retries) -> bool
|
|
985
|
+
def capped: (Integer delay) -> Integer?
|
|
986
|
+
def retry?: (Net::HTTPResponse response, bool unanswered) -> bool
|
|
987
|
+
def backoff: (Integer retries) -> Numeric
|
|
988
|
+
end
|
|
989
|
+
end
|