tesla_api 1.5.0 → 2.0.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 (32) hide show
  1. checksums.yaml +4 -4
  2. data/.tool-versions +1 -0
  3. data/.travis.yml +6 -2
  4. data/docs/miscellaneous/endpoints.md +6 -1
  5. data/docs/vehicle/optioncodes.md +104 -23
  6. data/docs/vehicle/state/data.md +2 -0
  7. data/docs/vehicle/state/vehiclestate.md +9 -0
  8. data/lib/tesla_api/client.rb +51 -22
  9. data/lib/tesla_api/version.rb +1 -1
  10. data/spec/cassettes/client-refresh.yml +51 -0
  11. data/spec/cassettes/vehicle-activate_speed_limit.yml +2 -2
  12. data/spec/cassettes/vehicle-cancel_software_update.yml +2 -2
  13. data/spec/cassettes/vehicle-charge_port_door_close.yml +2 -2
  14. data/spec/cassettes/vehicle-clear_speed_limit_pin.yml +2 -2
  15. data/spec/cassettes/vehicle-data.yml +2 -2
  16. data/spec/cassettes/vehicle-deactivate_speed_limit.yml +2 -2
  17. data/spec/cassettes/vehicle-navigation_request.yml +2 -2
  18. data/spec/cassettes/vehicle-nearby_charging_sites.yml +2 -2
  19. data/spec/cassettes/vehicle-open_frunk.yml +2 -2
  20. data/spec/cassettes/vehicle-open_trunk.yml +2 -2
  21. data/spec/cassettes/vehicle-reset_valet_pin.yml +2 -2
  22. data/spec/cassettes/vehicle-schedule_software_update.yml +2 -2
  23. data/spec/cassettes/vehicle-seat_heater_request.yml +2 -2
  24. data/spec/cassettes/vehicle-set_sentry_mode.yml +2 -2
  25. data/spec/cassettes/vehicle-set_speed_limit.yml +2 -2
  26. data/spec/cassettes/vehicle-set_valet_mode.yml +2 -2
  27. data/spec/cassettes/vehicle-steering_wheel_heater_request.yml +2 -2
  28. data/spec/lib/tesla_api/client_spec.rb +59 -43
  29. data/spec/lib/tesla_api/vehicle_spec.rb +1 -5
  30. data/spec/spec_helper.rb +2 -2
  31. data/tesla_api.gemspec +0 -1
  32. metadata +6 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 73167fdd579379407c55193de889645ca9b1b7fb6341fcb8a3abed2b219212f4
4
- data.tar.gz: 939adf5aa3e3bfdee0ac6cdb13827f9292c08b40441d8dfd72b9d872cb784f43
3
+ metadata.gz: a0a2c77105e4ceabe402f838427c9efbfb917d7f74b49d3f5f6637e3581e0678
4
+ data.tar.gz: f07b11556f4d3a4a874d68ed9ced60ba40e71f759f251b0449a07fcf1513b8a0
5
5
  SHA512:
6
- metadata.gz: f760988232016af782fdb8f5877e18e7be89d4dd8d3efbe71f3942b7ff6a0194ae67c67a4c829135acc860066d3291bd3079f20f19c02a56fd34c3742d620c74
7
- data.tar.gz: 6ee1fdaba380e976bfdffb76bbd09c3ea3af8c309c5de0c3c2bf11fec38e75b3ddfe1d1b998de2a61ea5749bddc3d45be9304d1151ef2bef5d0662624616ef47
6
+ metadata.gz: ba1727791cdb0493e9a703e55d3b400d4c59dc300d5e1d463482c3622466f0f6172904c6185273405188735337b42c7ffaf055c1fe1e1b7fbd984a7894f85b34
7
+ data.tar.gz: 5d73d9cf6960742d4d63b013b2ece343879a4809cb4f9dccf4ac1e1dd3f9e36f6b2e3b731bf9675d70a512f6afc6ddea9a03052ab81f65283be26e8cc6124d39
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 2.6.4
data/.travis.yml CHANGED
@@ -2,11 +2,15 @@ language: ruby
2
2
  rvm:
3
3
  - 2.6
4
4
  env:
5
- global:
5
+ global:
6
6
  - TESLA_EMAIL=elon.musk@teslamotors.com
7
7
  - TESLA_PASS=oilLOL
8
8
  - TESLA_CLIENT_ID=1
9
9
  - TESLA_CLIENT_SECRET=2
10
- - TESLA_API_TOKEN=3
10
+ - TESLA_ACCESS_TOKEN=3
11
+ - TESLA_REFRESH_TOKEN=4
12
+ before_install:
13
+ - gem update --system
14
+ - gem install bundler
11
15
  notifications:
12
16
  email: false
@@ -1,6 +1,6 @@
1
1
  # Endpoints File
2
2
 
3
- This the latest contents of the ownerapi_endpoints.json file from the 3.8.4 version of the app.
3
+ This the latest contents of the ownerapi_endpoints.json file from the 3.9.0 version of the app.
4
4
 
5
5
  ```json
6
6
  {
@@ -415,6 +415,11 @@ This the latest contents of the ownerapi_endpoints.json file from the 3.8.4 vers
415
415
  "URI": "api/1/energy_sites/{site_id}/history",
416
416
  "AUTH": true
417
417
  },
418
+ "CALENDAR_HISTORY_DATA": {
419
+ "TYPE": "GET",
420
+ "URI": "api/1/energy_sites/{site_id}/calendar_history",
421
+ "AUTH": true
422
+ },
418
423
  "BACKUP_RESERVE": {
419
424
  "TYPE": "POST",
420
425
  "URI": "api/1/energy_sites/{site_id}/backup",
@@ -17,6 +17,7 @@ appreciated!_
17
17
  | MS04 | Model S | This vehicle is a Model S |
18
18
  | MDLX | Model X | This vehicle is a Model X |
19
19
  | MDL3 | Model 3 | This vehicle is a Model 3 |
20
+ | MDLY | Model Y | This vehicle is a Model Y |
20
21
  | RENA | Region: North America | |
21
22
  | RENC | Region: Canada | |
22
23
  | REEU | Region: Europe | |
@@ -25,8 +26,17 @@ appreciated!_
25
26
  | AD05 | European 3-Phase, IT | |
26
27
  | AD06 | Schuko (1 phase, 230V 13A) | |
27
28
  | AD07 | Red IEC309 (3 phase, 400V 16A) | |
29
+ | AD08 | Blue Charging Adapter | |
30
+ | AD09 | Adapter, Swiss (1 phase, 10A) | |
31
+ | AD10 | Adapter, Denmark (1 phase, 13A) | |
32
+ | AD11 | Adapter, Italy (1 phase, 13A) | |
28
33
  | AD15 | ? | |
29
34
  | ADPX2 | Type 2 Public Charging Connector | |
35
+ | ADX4 | No European 3-Phase | |
36
+ | ADX5 | European 3-Phase, IT | |
37
+ | ADX6 | No - Adapter, Schuko (1 phase, 13A) | |
38
+ | ADX7 | No - 3-ph Red IEC309 (3 phase, 16A) | |
39
+ | ADX9 | No - Adapter, Swiss (1 phase, 10A) | |
30
40
  | ADX8 | Blue IEC309 (1 phase, 230V 32A) | |
31
41
  | AF00 | No HEPA Filter | |
32
42
  | AF02 | HEPA Filter | |
@@ -37,15 +47,19 @@ appreciated!_
37
47
  | APF2 | Full Self-Driving Capability | |
38
48
  | APH0 | Autopilot 2.0 Hardware | |
39
49
  | APH2 | Autopilot 2.0 Hardware | |
50
+ | APBS | Autopilot | Model 3 Autopilot |
51
+ | APF2 | Full Self-Driving Capability | |
40
52
  | APH3 | Autopilot 2.5 Hardware | |
41
53
  | APH4 | Autopilot 3.0 Hardware | Full Self-Driving Computer |
42
54
  | APPA | Autopilot 1.0 Hardware | |
43
55
  | APPB | Enhanced Autopilot | |
44
56
  | AU00 | No Audio Package | |
45
57
  | AU01 | Ultra High Fidelity Sound | |
46
- | BC0B | Tesla Black Brake Calipers | |
47
- | BC0R | Tesla Red Brake Calipers | |
58
+ | BC0B | Black Brake Calipers | |
59
+ | BC0R | Red Brake Calipers | |
60
+ | BC3B | Black Brake Calipers, Model 3 | |
48
61
  | BCMB | Black Brake Calipers | |
62
+ | BCYR | Performance Brakes | |
49
63
  | BP00 | No Ludicrous | |
50
64
  | BP01 | Ludicrous Speed Upgrade | |
51
65
  | BR00 | No Battery Firmware Limit | |
@@ -63,8 +77,13 @@ appreciated!_
63
77
  | BTX6 | 100 kWh | |
64
78
  | BTX7 | 75 kWh | |
65
79
  | BTX8 | 85 kWh | |
80
+ | CC01 | Five Seat Interior | |
81
+ | CC02 | Six Seat Interior | |
66
82
  | CC04 | Seven Seat Interior | |
83
+ | CC12 | Six Seat Interior with Center Console | |
67
84
  | CDM0 | No CHAdeMO Charging Adaptor | |
85
+ | CF00 | High Power Charger | |
86
+ | CF01 | 48amp charger | |
68
87
  | CH00 | Standard Charger (40 Amp) | |
69
88
  | CH01 | Dual Chargers (80 Amp) | |
70
89
  | CH04 | 72 Amp Charger (Model S/X) | |
@@ -75,7 +94,8 @@ appreciated!_
75
94
  | COL2 | Metallic | |
76
95
  | COL3 | Tesla Multi-Coat | |
77
96
  | COUS | Country: United States | |
78
- | CONL | Country: Netherlands | |
97
+ | CONL | Country: Netherlands | |
98
+ | CPW1 | 20" Performance Wheels | |
79
99
  | CW00 | No Cold Weather Package | |
80
100
  | CW02 | Subzero Weather Package | |
81
101
  | DA00 | No Autopilot | |
@@ -83,6 +103,7 @@ appreciated!_
83
103
  | DA02 | Autopilot Convenience Features | |
84
104
  | DCF0 | Autopilot Convenience Features (DCF0) | |
85
105
  | DRLH | Left Hand Drive | |
106
+ | BC3R | Performance Brakes | Model 3 |
86
107
  | DRRH | Right Hand Drive | |
87
108
  | DSH5 | PUR Dash Pad | |
88
109
  | DSH7 | Alcantara Dashboard Accents | |
@@ -96,6 +117,7 @@ appreciated!_
96
117
  | FG02 | Exterior Lighting Package | |
97
118
  | FMP6 | FMP6 | |
98
119
  | FR01 | Base Front Row | |
120
+ | FR02 | Ventilated Front Seats | |
99
121
  | FR03 | FR03 | |
100
122
  | FR04 | FR04 | |
101
123
  | HC00 | No Home Charging installation | |
@@ -106,6 +128,7 @@ appreciated!_
106
128
  | IDBA | Dark Ash Wood Decor | |
107
129
  | IDBO | Figured Ash Wood Decor | |
108
130
  | IDCF | Carbon Fiber Decor | |
131
+ | IDOK | Oak Decor | |
109
132
  | IDOM | Matte Obeche Wood Decor | |
110
133
  | IDOG | Gloss Obeche Wood Decor | |
111
134
  | IDLW | Lacewood Decor | |
@@ -120,6 +143,8 @@ appreciated!_
120
143
  | INLPC | Cream | |
121
144
  | INLPP | Black / Light Headliner | |
122
145
  | INWPT | Tan Interior | |
146
+ | INYPB | All Black Premium Interior | |
147
+ | INYPW | Black and White Premium Interior | |
123
148
  | IVBPP | All Black Interior | |
124
149
  | IVBSW | Ultra White Interior | |
125
150
  | IVBTB | All Black Interior | |
@@ -138,53 +163,78 @@ appreciated!_
138
163
  | LT4W | LT4W | |
139
164
  | LT5C | LT5C | |
140
165
  | LT5P | LT5P | |
141
- | LT6P | LT6P | |
166
+ | LT6P | LT6P | |
167
+ | LTPB | Lower Trim PUR Black | |
168
+ | ME01 | Memory Seats | |
142
169
  | ME02 | Memory Seats | |
143
170
  | MI00 | 2015 Production Refresh | |
144
171
  | MI01 | 2016 Production Refresh | |
145
172
  | MI02 | 2017 Production Refresh | |
146
- | MI03 | 201? Production Refresh (found on Model X ordered 11/2018 delivered 3/2019) | |
173
+ | MI03 | 201? Production Refresh | Found on Model X ordered 11/2018 delivered 3/2019 |
174
+ | MT300 | Standard Range Rear-Wheel Drive | |
147
175
  | MT301 | Standard Range Plus Rear-Wheel Drive | |
176
+ | MT302 | Long Range Rear-Wheel Drive | |
177
+ | MT303 | Long Range All-Wheel Drive | |
178
+ | MT304 | Long Range All-Wheel Drive Performance | |
148
179
  | MT305 | Mid Range Rear-Wheel Drive | |
149
- | OSSB | OSSB | |
180
+ | MTY02 | Long Range Rear-Wheel Drive | |
181
+ | MTY03 | Long Range All-Wheel Drive | |
182
+ | MTY04 | Long Range All-Wheel Drive Performance | |
183
+ | OSSB | Safety CA Black | |
184
+ | OSSW | Safety CA White | |
150
185
  | PA00 | No Paint Armor | |
151
- | PBCW | Catalina White | |
152
- | PBSB | Sierra Black | Translates to the Solid Black exterior color in design studio. Applicable to all variants of Model S, Model 3 and Model X. |
186
+ | PBCW | Solid White Color | |
187
+ | PBSB | Solid Black Color | |
153
188
  | PBT8 | Performance 85kWh | |
189
+ | PC30 | No Performance Chassis | |
190
+ | PC31 | Performance Chassis | |
154
191
  | PF00 | No Performance Legacy Package | |
155
192
  | PF01 | Performance Legacy Package | |
156
193
  | PI00 | No Premium Interior | |
157
194
  | PI01 | Premium Upgrades Package | |
158
195
  | PK00 | LEGACY No Parking Sensors | |
159
- | PMAB | Anza Brown Metallic | |
160
- | PMBL | Obsidian Black Multi-Coat | |
161
- | PMMB | Monterey Blue Metallic | |
162
- | PMMR | Multi-Coat Red | |
163
- | PMNG | Midnight Silver Metallic | Translates to the Midnight Silver Metallic exterior color in design studio. Applicable to all variants of Model S, Model 3 and Model X. |
164
- | PMSG | Sequoia Green Metallic | |
165
- | PMSS | San Simeon Silver Metallic | |
166
- | PMTG | Dolphin Grey Metallic | |
167
- | PPMR | Muir Red Multi-Coat | Translates to the Red Multi-Coat exterior color in design studio. Applicable to all variants of Model S, Model 3 and Model X. |
168
- | PPSB | Deep Blue Metallic | Translates to the Deep Blue Metallic exterior color in design studio. Applicable to all variants of Model S, Model 3 and Model X. |
169
- | PPSR | Signature Red | |
170
- | PPSW | Shasta Pearl White Multi-Coat | Translates to the Pearl White Multi-Coat exterior color in design studio. Applicable to all variants of Model S, Model 3 and Model X. |
171
- | PPTI | Titanium Metallic | |
196
+ | PMAB | Anza Brown Metallic Color | |
197
+ | PMBL | Obsidian Black Multi-Coat Color | |
198
+ | PMMB | Monterey Blue Metallic Color | |
199
+ | PMMR | Red Multi-Coat Color | |
200
+ | PMNG | Midnight Silver Metallic Color | |
201
+ | PMSG | Green Metallic Color| |
202
+ | PMSS | San Simeon Silver Metallic Color | |
203
+ | PMTG | Dolphin Grey Metallic Color | |
204
+ | PPMR | Red Multi-Coat Color | |
205
+ | PPSB | Deep Blue Metallic Color | |
206
+ | PPSR | Signature Red Color | |
207
+ | PPSW | Pearl White Multi-Coat Color | |
208
+ | PPTI | Titanium Metallic Color | |
209
+ | PL31 | Performance Pedals | Model 3 |
172
210
  | PRM30 | Partial Premium Interior | |
173
211
  | PRM31 | Premium Interior | |
212
+ | PRM3S | Standard Interior | |
213
+ | PRMY1 | Premium Interior | |
174
214
  | PS00 | No Parcel Shelf | |
175
215
  | PS01 | Parcel Shelf | |
176
216
  | PX00 | No Performance Plus Package | |
177
217
  | PX01 | Performance Plus | |
178
218
  | PX6D | Zero to 60 in 2.5 sec | |
179
219
  | P85D | P85D | |
220
+ | QLBS | Black Premium Interior | |
221
+ | QLFC | Cream Premium Interior | |
222
+ | QLFP | Black Premium Interior | |
223
+ | QLFW | White Premium Interior | |
224
+ | QLWS | White Premium Interior | |
180
225
  | QNET | Tan NextGen | |
226
+ | QPBT | Black Textile Interior | |
181
227
  | QPMP | Black seats | |
228
+ | QTBS | Black Premium Interior | |
182
229
  | QTBW | White Premium Seats | |
230
+ | QTFC | Cream Premium Interior | |
183
231
  | QTFP | Black Premium Seats | |
232
+ | QTFW | White Premium Interior | |
184
233
  | QTPC | Cream Premium Seats | |
185
234
  | QTPP | Black Premium Seats | |
186
235
  | QTPT | Tan Premium Seats | |
187
- | QTTB | Multi-Pattern Black Seats | |
236
+ | QTTB | Multi-Pattern Black Seats | |
237
+ | QTWS | White Premium Interior | |
188
238
  | QVBM | Multi-Pattern Black Seats | |
189
239
  | QVPC | Vegan Cream Seats | |
190
240
  | QVPP | Vegan Cream Seats | |
@@ -206,12 +256,14 @@ appreciated!_
206
256
  | SC01 | Supercharging Enabled | |
207
257
  | SC04 | Pay Per Use Supercharging | |
208
258
  | SC05 | Free Supercharging | |
209
- | SP00 | No Security Package | |
259
+ | SP00 | No Security Package | |
210
260
  | SR01 | Standard 2nd row | |
211
261
  | SR06 | Seven Seat Interior | |
212
262
  | SR07 | Standard 2nd row | |
213
263
  | ST00 | Non-leather Steering Wheel | |
214
264
  | ST01 | Non-heated Leather Steering Wheel | |
265
+ | STY5S | Five Seat Interior | |
266
+ | STY7S | Seven Seat Interior | |
215
267
  | SU00 | Standard Suspension | |
216
268
  | SU01 | Smart Air Suspension | |
217
269
  | TIC4 | All-Season Tires | |
@@ -232,20 +284,49 @@ appreciated!_
232
284
  | UTAW | Light Headliner | |
233
285
  | UTPB | Dark Headliner | |
234
286
  | UTSB | Dark Headliner | |
287
+ | UTZW | Light Headliner | |
288
+ | SLR1 | Carbon Fibre Spoiler | Model 3 |
289
+ | SPT31 | Performance Upgrade | Model 3 |
290
+ | SPTY1 | Performance Upgrade | Model Y |
291
+ | W32P | 20" Performance Wheels | Model 3 |
235
292
  | W38B | 18" Aero Wheels | For the Model 3 and Model Y |
236
293
  | W39B | 19" Sport Wheels | |
237
294
  | WT20 | 20" Silver Slipstream Wheels | |
295
+ | WT22 | 22" Silver Turbine Wheels | |
296
+ | WTAB | 21" Black Arachnid Wheels | |
238
297
  | WTAS | 19" Silver Slipstream Wheels | |
239
298
  | WTDS | 19" Grey Slipstream Wheels | |
299
+ | WTNN | 20" Nokian Winter Tires (non-studded) | |
300
+ | WTNS | 20" Nokian Winter Tires (studded) | |
301
+ | WTP2 | 20" Pirelli Winter Tires | |
302
+ | WTSC | 20" Sonic Carbon Wheels | |
240
303
  | WTSG | 21" Turbine Wheels | |
241
304
  | WTSP | 21" Turbine Wheels | |
242
305
  | WTSS | 21" Turbine Wheels | |
243
306
  | WTTB | 19" Cyclone Wheels | |
307
+ | WTTC | 21" Sonic Carbon Twin Turbine Wheels | |
308
+ | WTUT | 22" Onyx Black Wheels | |
309
+ | WTW2 | 19" Nokian Winter Wheel Set | |
310
+ | WTW3 | 19" Pirelli Winter Wheel Set | |
244
311
  | WTW4 | 19" Winter Tire Set | |
245
312
  | WTW5 | 21" Winter Tire Set | |
313
+ | WTW6 | 19" Nokian Winter Tires (studded) | |
314
+ | WTW7 | 19" Nokian Winter Tires (non-studded) | |
315
+ | WTW8 | 19" Pirelli Winter Tires | |
246
316
  | WTX1 | 19" Michelin Primacy Tire Upgrade | |
317
+ | WXNN | No 20" Nokian Winter Tires (non-studded) | |
318
+ | WXNS | No 20" Nokian Winter Tires (studded) | |
319
+ | WXP2 | No 20" Pirelli Winter Tires | |
320
+ | WXW2 | No 19" Wheels with Nokian Winter Tyres | |
321
+ | WXW3 | No 19" Wheels with Pirelli Winter Tyres | |
247
322
  | WXW4 | No 19" Winter Tire Set | |
248
323
  | WXW5 | No 21" Winter Tire Set | |
324
+ | WXW6 | No 19" Nokian Winter Tires (studded) | |
325
+ | WXW7 | No 19" Nokian Winter Tires (non-studded) | |
326
+ | WXW8 | No 19" Pirelli Winter Tires | |
327
+ | WY18B | 18" Aero Wheels | |
328
+ | WY19B | 19" Sport Wheels | |
329
+ | WY20P | 20" Performance Wheels | |
249
330
  | X001 | Override: Power Liftgate | |
250
331
  | X003 | Maps & Navigation | |
251
332
  | X004 | Override: No Navigation | |
@@ -4,6 +4,8 @@
4
4
 
5
5
  A rollup of all the `data_request` endpoints plus vehicle configuration.
6
6
 
7
+ *Note:* all `*_range` values are in miles, irrespective of GUI configuration.
8
+
7
9
  ### Response
8
10
 
9
11
  ```json
@@ -50,3 +50,12 @@ Returns the vehicle's physical state, such as which doors are open.
50
50
  }
51
51
  }
52
52
  ```
53
+
54
+ ### Center Display States
55
+ | State | Description |
56
+ |-------|-----------------|
57
+ | 0 | Off |
58
+ | 2 | Normal On |
59
+ | 3 | Charging Screen |
60
+ | 7 | Sentry Mode |
61
+ | 8 | Dog Mode |
@@ -4,36 +4,57 @@ module TeslaApi
4
4
  base_uri 'https://owner-api.teslamotors.com/api/1'
5
5
  headers 'User-Agent' => "github.com/timdorr/tesla-api v:#{VERSION}"
6
6
  format :json
7
+ raise_on [401]
7
8
 
8
- attr_reader :email, :token, :refresh_token, :client_id, :client_secret
9
+ attr_reader :email, :access_token, :access_token_expires_at, :refresh_token, :client_id, :client_secret
9
10
 
10
- def initialize(email, client_id = ENV['TESLA_CLIENT_ID'], client_secret = ENV['TESLA_CLIENT_SECRET'])
11
+ def initialize(
12
+ email: nil,
13
+ access_token: nil,
14
+ access_token_expires_at: nil,
15
+ refresh_token: nil,
16
+ client_id: ENV['TESLA_CLIENT_ID'],
17
+ client_secret: ENV['TESLA_CLIENT_SECRET']
18
+ )
11
19
  @email = email
20
+
12
21
  @client_id = client_id
13
22
  @client_secret = client_secret
14
- end
15
23
 
16
- def token=(token)
17
- @token = token
18
- self.class.headers 'Authorization' => "Bearer #{token}"
24
+ self.update_token(
25
+ access_token: access_token,
26
+ access_token_expires_at: access_token_expires_at,
27
+ refresh_token: refresh_token
28
+ )
19
29
  end
20
30
 
21
- def expires_in=(seconds)
22
- @expires_in = seconds.to_f
23
- end
31
+ def update_token(access_token:, access_token_expires_at:, refresh_token:)
32
+ @access_token = access_token
33
+ @access_token_expires_at = access_token_expires_at
34
+ @refresh_token = refresh_token
35
+ self.class.headers 'Authorization' => "Bearer #{access_token}" if access_token
24
36
 
25
- def created_at=(timestamp)
26
- @created_at = Time.at(timestamp.to_f).to_datetime
37
+ access_token
27
38
  end
28
39
 
29
- def expired_at
30
- return nil unless defined?(@created_at)
31
- (@created_at.to_time + @expires_in.to_f).to_datetime
32
- end
40
+ def refresh_access_token
41
+ response = self.class.post(
42
+ 'https://owner-api.teslamotors.com/oauth/token',
43
+ body: {
44
+ grant_type: 'refresh_token',
45
+ client_id: client_id,
46
+ client_secret: client_secret,
47
+ refresh_token: refresh_token
48
+ }
49
+ )
33
50
 
34
- def expired?
35
- return true unless defined?(@created_at)
36
- expired_at <= DateTime.now
51
+ self.update_token(
52
+ access_token: response['access_token'],
53
+ access_token_expires_at: Time.at(response['created_at'] + response['expires_in']).to_datetime,
54
+ refresh_token: response['refresh_token']
55
+ )
56
+
57
+ response
37
58
  end
38
59
 
39
60
  def login!(password)
@@ -48,10 +69,18 @@ module TeslaApi
48
69
  }
49
70
  )
50
71
 
51
- self.expires_in = response['expires_in']
52
- self.created_at = response['created_at']
53
- self.token = response['access_token']
54
- self.refresh_token = response['refresh_token']
72
+ self.update_token(
73
+ access_token: response['access_token'],
74
+ access_token_expires_at: Time.at(response['created_at'] + response['expires_in']).to_datetime,
75
+ refresh_token: response['refresh_token']
76
+ )
77
+
78
+ response
79
+ end
80
+
81
+ def expired?
82
+ return true if access_token_expires_at.nil?
83
+ access_token_expires_at <= DateTime.now
55
84
  end
56
85
 
57
86
  def vehicles
@@ -1,3 +1,3 @@
1
1
  module TeslaApi
2
- VERSION = '1.5.0'
2
+ VERSION = '2.0.0'
3
3
  end
@@ -0,0 +1,51 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://owner-api.teslamotors.com/oauth/token
6
+ body:
7
+ encoding: UTF-8
8
+ string: grant_type=refresh_token&client_id=<TESLA_CLIENT_ID>&client_secret=<TESLA_CLIENT_SECRET>&refresh_token=<TESLA_REFRESH_TOKEN>
9
+ headers:
10
+ User-Agent:
11
+ - github.com/timdorr/tesla-api v:1.5.0
12
+ Authorization:
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
+ response:
15
+ status:
16
+ code: 200
17
+ message: OK
18
+ headers:
19
+ Server:
20
+ - nginx
21
+ Date:
22
+ - Mon, 23 Sep 2019 17:25:05 GMT
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Transfer-Encoding:
26
+ - chunked
27
+ Connection:
28
+ - keep-alive
29
+ X-Frame-Options:
30
+ - SAMEORIGIN
31
+ - SAMEORIGIN
32
+ X-Xss-Protection:
33
+ - 1; mode=block
34
+ X-Content-Type-Options:
35
+ - nosniff
36
+ Cache-Control:
37
+ - no-store
38
+ Pragma:
39
+ - no-cache
40
+ Etag:
41
+ - W/"25e04c26d708b6763d3dca87bcaeb2a7"
42
+ X-Request-Id:
43
+ - d153d7b0-ce0b-4c24-a109-e60488df7f48
44
+ X-Runtime:
45
+ - '0.020946'
46
+ body:
47
+ encoding: UTF-8
48
+ string: '{"access_token":"bb91d9892b8af05ad389f2d05b9689657a076f61c4d97ff398f23d86112fb5ca","token_type":"bearer","expires_in":3888000,"refresh_token":"21879d76c4e00309b3d69c6ecb128b89e0c7e210838404601d9f433e9a069022","created_at":1569259505}'
49
+ http_version:
50
+ recorded_at: Mon, 23 Sep 2019 17:25:05 GMT
51
+ recorded_with: VCR 4.0.0
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  Authorization:
11
- - Bearer <TESLA_API_TOKEN>
11
+ - Bearer <TESLA_ACCESS_TOKEN>
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -54,7 +54,7 @@ http_interactions:
54
54
  string: pin=1234
55
55
  headers:
56
56
  Authorization:
57
- - Bearer <TESLA_API_TOKEN>
57
+ - Bearer <TESLA_ACCESS_TOKEN>
58
58
  response:
59
59
  status:
60
60
  code: 200
@@ -10,7 +10,7 @@ http_interactions:
10
10
  User-Agent:
11
11
  - github.com/timdorr/tesla-api v:1.3.0
12
12
  Authorization:
13
- - Bearer <TESLA_API_TOKEN>
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
14
  response:
15
15
  status:
16
16
  code: 200
@@ -59,7 +59,7 @@ http_interactions:
59
59
  User-Agent:
60
60
  - github.com/timdorr/tesla-api v:1.3.0
61
61
  Authorization:
62
- - Bearer <TESLA_API_TOKEN>
62
+ - Bearer <TESLA_ACCESS_TOKEN>
63
63
  response:
64
64
  status:
65
65
  code: 200
@@ -10,7 +10,7 @@ http_interactions:
10
10
  User-Agent:
11
11
  - github.com/timdorr/tesla-api v:1.3.0
12
12
  Authorization:
13
- - Bearer <TESLA_API_TOKEN>
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
14
  response:
15
15
  status:
16
16
  code: 200
@@ -59,7 +59,7 @@ http_interactions:
59
59
  User-Agent:
60
60
  - github.com/timdorr/tesla-api v:1.3.0
61
61
  Authorization:
62
- - Bearer <TESLA_API_TOKEN>
62
+ - Bearer <TESLA_ACCESS_TOKEN>
63
63
  response:
64
64
  status:
65
65
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  Authorization:
11
- - Bearer <TESLA_API_TOKEN>
11
+ - Bearer <TESLA_ACCESS_TOKEN>
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -54,7 +54,7 @@ http_interactions:
54
54
  string: pin=1234
55
55
  headers:
56
56
  Authorization:
57
- - Bearer <TESLA_API_TOKEN>
57
+ - Bearer <TESLA_ACCESS_TOKEN>
58
58
  response:
59
59
  status:
60
60
  code: 200
@@ -10,7 +10,7 @@ http_interactions:
10
10
  User-Agent:
11
11
  - github.com/timdorr/tesla-api v:1.3.0
12
12
  Authorization:
13
- - Bearer <TESLA_API_TOKEN>
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
14
  response:
15
15
  status:
16
16
  code: 200
@@ -59,7 +59,7 @@ http_interactions:
59
59
  User-Agent:
60
60
  - github.com/timdorr/tesla-api v:1.3.0
61
61
  Authorization:
62
- - Bearer <TESLA_API_TOKEN>
62
+ - Bearer <TESLA_ACCESS_TOKEN>
63
63
  response:
64
64
  status:
65
65
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  Authorization:
11
- - Bearer <TESLA_API_TOKEN>
11
+ - Bearer <TESLA_ACCESS_TOKEN>
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -54,7 +54,7 @@ http_interactions:
54
54
  string: pin=1234
55
55
  headers:
56
56
  Authorization:
57
- - Bearer <TESLA_API_TOKEN>
57
+ - Bearer <TESLA_ACCESS_TOKEN>
58
58
  response:
59
59
  status:
60
60
  code: 200
@@ -10,7 +10,7 @@ http_interactions:
10
10
  User-Agent:
11
11
  - github.com/timdorr/tesla-api v:1.3.0
12
12
  Authorization:
13
- - Bearer <TESLA_API_TOKEN>
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
14
  response:
15
15
  status:
16
16
  code: 200
@@ -59,7 +59,7 @@ http_interactions:
59
59
  User-Agent:
60
60
  - github.com/timdorr/tesla-api v:1.3.0
61
61
  Authorization:
62
- - Bearer <TESLA_API_TOKEN>
62
+ - Bearer <TESLA_ACCESS_TOKEN>
63
63
  response:
64
64
  status:
65
65
  code: 200
@@ -10,7 +10,7 @@ http_interactions:
10
10
  User-Agent:
11
11
  - github.com/timdorr/tesla-api v:1.3.0
12
12
  Authorization:
13
- - Bearer <TESLA_API_TOKEN>
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
14
  response:
15
15
  status:
16
16
  code: 200
@@ -59,7 +59,7 @@ http_interactions:
59
59
  User-Agent:
60
60
  - github.com/timdorr/tesla-api v:1.3.0
61
61
  Authorization:
62
- - Bearer <TESLA_API_TOKEN>
62
+ - Bearer <TESLA_ACCESS_TOKEN>
63
63
  response:
64
64
  status:
65
65
  code: 400
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  Authorization:
11
- - Bearer <TESLA_API_TOKEN>
11
+ - Bearer <TESLA_ACCESS_TOKEN>
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -54,7 +54,7 @@ http_interactions:
54
54
  string: which_trunk=front
55
55
  headers:
56
56
  Authorization:
57
- - Bearer <TESLA_API_TOKEN>
57
+ - Bearer <TESLA_ACCESS_TOKEN>
58
58
  response:
59
59
  status:
60
60
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  Authorization:
11
- - Bearer <TESLA_API_TOKEN>
11
+ - Bearer <TESLA_ACCESS_TOKEN>
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -54,7 +54,7 @@ http_interactions:
54
54
  string: which_trunk=front
55
55
  headers:
56
56
  Authorization:
57
- - Bearer <TESLA_API_TOKEN>
57
+ - Bearer <TESLA_ACCESS_TOKEN>
58
58
  response:
59
59
  status:
60
60
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  Authorization:
11
- - Bearer <TESLA_API_TOKEN>
11
+ - Bearer <TESLA_ACCESS_TOKEN>
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -49,7 +49,7 @@ http_interactions:
49
49
  string: ''
50
50
  headers:
51
51
  Authorization:
52
- - Bearer <TESLA_API_TOKEN>
52
+ - Bearer <TESLA_ACCESS_TOKEN>
53
53
  response:
54
54
  status:
55
55
  code: 200
@@ -10,7 +10,7 @@ http_interactions:
10
10
  User-Agent:
11
11
  - github.com/timdorr/tesla-api v:1.3.0
12
12
  Authorization:
13
- - Bearer <TESLA_API_TOKEN>
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
14
  response:
15
15
  status:
16
16
  code: 200
@@ -59,7 +59,7 @@ http_interactions:
59
59
  User-Agent:
60
60
  - github.com/timdorr/tesla-api v:1.3.0
61
61
  Authorization:
62
- - Bearer <TESLA_API_TOKEN>
62
+ - Bearer <TESLA_ACCESS_TOKEN>
63
63
  response:
64
64
  status:
65
65
  code: 200
@@ -10,7 +10,7 @@ http_interactions:
10
10
  User-Agent:
11
11
  - github.com/timdorr/tesla-api v:1.4.1
12
12
  Authorization:
13
- - Bearer <TESLA_API_TOKEN>
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
14
  response:
15
15
  status:
16
16
  code: 200
@@ -59,7 +59,7 @@ http_interactions:
59
59
  User-Agent:
60
60
  - github.com/timdorr/tesla-api v:1.4.1
61
61
  Authorization:
62
- - Bearer <TESLA_API_TOKEN>
62
+ - Bearer <TESLA_ACCESS_TOKEN>
63
63
  response:
64
64
  status:
65
65
  code: 200
@@ -10,7 +10,7 @@ http_interactions:
10
10
  User-Agent:
11
11
  - github.com/timdorr/tesla-api v:1.4.1
12
12
  Authorization:
13
- - Bearer <TESLA_API_TOKEN>
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
14
  response:
15
15
  status:
16
16
  code: 200
@@ -59,7 +59,7 @@ http_interactions:
59
59
  User-Agent:
60
60
  - github.com/timdorr/tesla-api v:1.4.1
61
61
  Authorization:
62
- - Bearer <TESLA_API_TOKEN>
62
+ - Bearer <TESLA_ACCESS_TOKEN>
63
63
  response:
64
64
  status:
65
65
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  Authorization:
11
- - Bearer <TESLA_API_TOKEN>
11
+ - Bearer <TESLA_ACCESS_TOKEN>
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -54,7 +54,7 @@ http_interactions:
54
54
  string: limit_mph=65
55
55
  headers:
56
56
  Authorization:
57
- - Bearer <TESLA_API_TOKEN>
57
+ - Bearer <TESLA_ACCESS_TOKEN>
58
58
  response:
59
59
  status:
60
60
  code: 200
@@ -8,7 +8,7 @@ http_interactions:
8
8
  string: ''
9
9
  headers:
10
10
  Authorization:
11
- - Bearer <TESLA_API_TOKEN>
11
+ - Bearer <TESLA_ACCESS_TOKEN>
12
12
  response:
13
13
  status:
14
14
  code: 200
@@ -49,7 +49,7 @@ http_interactions:
49
49
  string: on=true&password=1234
50
50
  headers:
51
51
  Authorization:
52
- - Bearer <TESLA_API_TOKEN>
52
+ - Bearer <TESLA_ACCESS_TOKEN>
53
53
  response:
54
54
  status:
55
55
  code: 200
@@ -10,7 +10,7 @@ http_interactions:
10
10
  User-Agent:
11
11
  - github.com/timdorr/tesla-api v:1.4.1
12
12
  Authorization:
13
- - Bearer <TESLA_API_TOKEN>
13
+ - Bearer <TESLA_ACCESS_TOKEN>
14
14
  response:
15
15
  status:
16
16
  code: 200
@@ -59,7 +59,7 @@ http_interactions:
59
59
  User-Agent:
60
60
  - github.com/timdorr/tesla-api v:1.4.1
61
61
  Authorization:
62
- - Bearer <TESLA_API_TOKEN>
62
+ - Bearer <TESLA_ACCESS_TOKEN>
63
63
  response:
64
64
  status:
65
65
  code: 200
@@ -1,63 +1,79 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe TeslaApi::Client do
4
- subject(:tesla_api) { TeslaApi::Client.new(ENV['TESLA_EMAIL']) }
4
+ subject(:tesla_api) { TeslaApi::Client.new(email: ENV['TESLA_EMAIL']) }
5
5
 
6
- describe '#new client' do
7
- it 'has no expiry date' do
8
- expect(tesla_api.expired_at).to eq(nil)
9
- end
6
+ context 'password grant auth' do
7
+ describe '#new' do
8
+ it 'has no expiry date' do
9
+ expect(tesla_api.access_token_expires_at).to eq(nil)
10
+ end
10
11
 
11
- it 'has a expiry status set to true' do
12
- expect(tesla_api.expired?).to eq(true)
12
+ it 'has a expiry status set to true' do
13
+ expect(tesla_api.expired?).to eq(true)
14
+ end
13
15
  end
14
- end
15
16
 
16
- describe '#token=' do
17
- it 'sets a Bearer token' do
18
- tesla_api.token = Faker::Lorem.characters(32)
19
- expect(tesla_api.class.headers).to include({'Authorization' => /Bearer [a-z0-9]{32}/})
20
- end
21
- end
17
+ describe '#login!', vcr: { cassette_name: 'client-login' } do
18
+ it { is_expected.to be_a(TeslaApi::Client) }
22
19
 
23
- describe '#login!', vcr: { cassette_name: 'client-login' } do
24
- it { is_expected.to be_a(TeslaApi::Client) }
20
+ it 'logs into the API' do
21
+ tesla_api.login!(ENV['TESLA_PASS'])
22
+ expect(a_request(:post, "https://#{URI.parse(tesla_api.class.base_uri).host}/oauth/token")).to have_been_made.once
23
+ end
25
24
 
26
- it 'logs into the API' do
27
- tesla_api.login!(ENV['TESLA_PASS'])
28
- expect(a_request(:post, "https://#{URI.parse(tesla_api.class.base_uri).host}/oauth/token")).to have_been_made.once
29
- end
25
+ it 'sets a Bearer token header' do
26
+ tesla_api.login!(ENV['TESLA_PASS'])
27
+ expect(tesla_api.class.headers).to include({'Authorization' => /Bearer [a-z0-9]{32}/})
28
+ end
30
29
 
31
- it 'set a expiry date' do
32
- tesla_api.login!(ENV['TESLA_PASS'])
33
- expect(tesla_api.expired_at).to eq(Time.at(1475777133 + 7776000).to_datetime)
34
- end
30
+ it 'obtains a Bearer token' do
31
+ tesla_api.login!(ENV['TESLA_PASS'])
32
+ expect(tesla_api.access_token).to match(/[a-z0-9]{32}/)
33
+ end
35
34
 
36
- it 'expose expiry status' do
37
- tesla_api.login!(ENV['TESLA_PASS'])
38
- tesla_api.created_at = (Time.now - 1).to_i
39
- expect(tesla_api.expired?).to eq(false)
40
- end
35
+ it 'set a expiry date' do
36
+ tesla_api.login!(ENV['TESLA_PASS'])
37
+ expect(tesla_api.access_token_expires_at).to eq(Time.at(1475777133 + 7776000).to_datetime)
38
+ end
41
39
 
42
- it 'is expired when has a 90+ days old date' do
43
- tesla_api.login!(ENV['TESLA_PASS'])
44
- tesla_api.created_at = (Time.now - 7776000 - 1).to_i
45
- expect(tesla_api.expired?).to eq(true)
46
- end
40
+ it 'obtains a refresh token' do
41
+ tesla_api.login!(ENV['TESLA_PASS'])
42
+ expect(tesla_api.refresh_token).to match(/[a-z0-9]{32}/)
43
+ end
47
44
 
48
- it 'sets a Bearer token header' do
49
- tesla_api.login!(ENV['TESLA_PASS'])
50
- expect(tesla_api.class.headers).to include({'Authorization' => /Bearer [a-z0-9]{32}/})
45
+ it 'expose expiry status' do
46
+ tesla_api.login!(ENV['TESLA_PASS'])
47
+ expect(tesla_api.expired?).to eq(true)
48
+ end
51
49
  end
50
+ end
51
+
52
+ context 'token grant auth' do
53
+ subject(:tesla_api) { TeslaApi::Client.new(
54
+ access_token: access_token,
55
+ access_token_expires_at: DateTime.now + 1,
56
+ refresh_token: refresh_token
57
+ ) }
58
+
59
+ let(:access_token) { ENV['TESLA_ACCESS_TOKEN'] }
60
+ let(:refresh_token) { ENV['TESLA_REFRESH_TOKEN'] }
61
+
62
+ describe '#new' do
63
+ it 'is not expired' do
64
+ expect(tesla_api.expired?).to eq(false)
65
+ end
52
66
 
53
- it 'obtains a Bearer token' do
54
- tesla_api.login!(ENV['TESLA_PASS'])
55
- expect(tesla_api.token).to match(/[a-z0-9]{32}/)
67
+ it 'sets a Bearer token header' do
68
+ expect(tesla_api.class.headers).to include({'Authorization' => "Bearer #{access_token}"})
69
+ end
56
70
  end
57
71
 
58
- it 'obtains a refresh token' do
59
- tesla_api.login!(ENV['TESLA_PASS'])
60
- expect(tesla_api.refresh_token).to match(/[a-z0-9]{32}/)
72
+ describe '#refresh_access_token', vcr: {cassette_name: 'client-refresh'} do
73
+ it 'refreshes the access token' do
74
+ tesla_api.refresh_access_token
75
+ expect(tesla_api.access_token).not_to eq(access_token)
76
+ end
61
77
  end
62
78
  end
63
79
 
@@ -1,11 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  RSpec.describe TeslaApi::Vehicle do
4
- let(:tesla_api) { TeslaApi::Client.new(ENV['TESLA_EMAIL']) }
5
-
6
- before do
7
- tesla_api.token = ENV['TESLA_API_TOKEN']
8
- end
4
+ let(:tesla_api) { TeslaApi::Client.new(access_token: ENV['TESLA_ACCESS_TOKEN']) }
9
5
 
10
6
  subject(:vehicle) { tesla_api.vehicles.first }
11
7
 
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'dotenv'
2
- require 'faker'
3
2
  require 'vcr'
4
3
  require 'webmock/rspec'
5
4
 
@@ -17,7 +16,8 @@ VCR.configure do |c|
17
16
  c.define_cassette_placeholder('<TESLA_PASS>') { ENV['TESLA_PASS'] }
18
17
  c.define_cassette_placeholder('<TESLA_CLIENT_ID>') { ENV['TESLA_CLIENT_ID'] }
19
18
  c.define_cassette_placeholder('<TESLA_CLIENT_SECRET>') { ENV['TESLA_CLIENT_SECRET'] }
20
- c.define_cassette_placeholder('<TESLA_API_TOKEN>') { ENV['TESLA_API_TOKEN'] }
19
+ c.define_cassette_placeholder('<TESLA_ACCESS_TOKEN>') { ENV['TESLA_ACCESS_TOKEN'] }
20
+ c.define_cassette_placeholder('<TESLA_REFRESH_TOKEN>') { ENV['TESLA_REFRESH_TOKEN'] }
21
21
  end
22
22
 
23
23
  RSpec.configure do |config|
data/tesla_api.gemspec CHANGED
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency 'bundler', '~> 2.0'
22
22
  spec.add_development_dependency 'rake', '~> 12.0'
23
23
  spec.add_development_dependency 'rspec', '~> 3.1'
24
- spec.add_development_dependency 'faker', '~> 1.4'
25
24
  spec.add_development_dependency 'vcr', '~> 4.0'
26
25
  spec.add_development_dependency 'webmock', '~> 3.0'
27
26
  spec.add_development_dependency 'dotenv', '~> 2.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tesla_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Dorr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-30 00:00:00.000000000 Z
11
+ date: 2019-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '3.1'
97
- - !ruby/object:Gem::Dependency
98
- name: faker
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '1.4'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '1.4'
111
97
  - !ruby/object:Gem::Dependency
112
98
  name: vcr
113
99
  requirement: !ruby/object:Gem::Requirement
@@ -161,6 +147,7 @@ files:
161
147
  - ".gitbook.yml"
162
148
  - ".gitignore"
163
149
  - ".rspec"
150
+ - ".tool-versions"
164
151
  - ".travis.yml"
165
152
  - Gemfile
166
153
  - LICENSE
@@ -209,6 +196,7 @@ files:
209
196
  - lib/tesla_api/vehicle.rb
210
197
  - lib/tesla_api/version.rb
211
198
  - spec/cassettes/client-login.yml
199
+ - spec/cassettes/client-refresh.yml
212
200
  - spec/cassettes/client-vehicles.yml
213
201
  - spec/cassettes/vehicle-activate_speed_limit.yml
214
202
  - spec/cassettes/vehicle-auto_conditioning_start.yml
@@ -280,12 +268,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
268
  - !ruby/object:Gem::Version
281
269
  version: '0'
282
270
  requirements: []
283
- rubygems_version: 3.0.2
271
+ rubygems_version: 3.0.6
284
272
  signing_key:
285
273
  specification_version: 4
286
274
  summary: A wrapper for the Tesla JSON API
287
275
  test_files:
288
276
  - spec/cassettes/client-login.yml
277
+ - spec/cassettes/client-refresh.yml
289
278
  - spec/cassettes/client-vehicles.yml
290
279
  - spec/cassettes/vehicle-activate_speed_limit.yml
291
280
  - spec/cassettes/vehicle-auto_conditioning_start.yml