tesla-api 0.0.1
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.
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.rdoc +40 -0
- data/Rakefile +10 -0
- data/fixtures/vcr_cassettes/charge_state.yml +134 -0
- data/fixtures/vcr_cassettes/climate_state.yml +134 -0
- data/fixtures/vcr_cassettes/connection.yml +91 -0
- data/fixtures/vcr_cassettes/drive_state.yml +134 -0
- data/fixtures/vcr_cassettes/gui_settings.yml +134 -0
- data/fixtures/vcr_cassettes/vehicle.yml +91 -0
- data/fixtures/vcr_cassettes/vehicle_state.yml +134 -0
- data/lib/tesla-api.rb +16 -0
- data/lib/tesla-api/charge_state.rb +87 -0
- data/lib/tesla-api/climate_state.rb +55 -0
- data/lib/tesla-api/connection.rb +58 -0
- data/lib/tesla-api/data.rb +52 -0
- data/lib/tesla-api/drive_state.rb +37 -0
- data/lib/tesla-api/errors.rb +41 -0
- data/lib/tesla-api/gui_settings.rb +34 -0
- data/lib/tesla-api/private_api.rb +157 -0
- data/lib/tesla-api/tesla_api.rb +4 -0
- data/lib/tesla-api/vehicle.rb +257 -0
- data/lib/tesla-api/vehicle_state.rb +92 -0
- data/lib/tesla-api/version.rb +4 -0
- data/tesla-api.gemspec +23 -0
- data/test/helper.rb +10 -0
- data/test/test_charge_state.rb +72 -0
- data/test/test_climate_state.rb +52 -0
- data/test/test_connection.rb +32 -0
- data/test/test_drive_state.rb +36 -0
- data/test/test_gui_settings.rb +36 -0
- data/test/test_vehicle.rb +32 -0
- data/test/test_vehicle_state.rb +80 -0
- metadata +135 -0
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class ClimateStateTest < Test::Unit::TestCase
|
4
|
+
USER = "user@example.com"
|
5
|
+
PASSWORD = "password"
|
6
|
+
RECORD_MODE = :new_episodes
|
7
|
+
|
8
|
+
def climate_state
|
9
|
+
@charge_state ||= begin
|
10
|
+
VCR.use_cassette('climate_state', :record => RECORD_MODE) do
|
11
|
+
TeslaAPI::Connection.new(USER, PASSWORD).vehicle.climate_state
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_inside_temp_celcius
|
17
|
+
assert_equal nil, climate_state.inside_temp_celcius
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_outside_temp_celcius
|
21
|
+
assert_equal nil, climate_state.outside_temp_celcius
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_driver_temp_setting_celcius
|
25
|
+
assert_equal 23.1, climate_state.driver_temp_setting_celcius
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_passenger_temp_setting_celcius
|
29
|
+
assert_equal 23.1, climate_state.passenger_temp_setting_celcius
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_fan_speed
|
33
|
+
assert_equal nil, climate_state.fan_speed
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_auto_conditioning_on
|
37
|
+
assert !climate_state.auto_conditioning_on?
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_front_defroster_on
|
41
|
+
assert !climate_state.front_defroster_on?
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_rear_defroster_on
|
45
|
+
assert !climate_state.rear_defroster_on?
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_fan_on
|
49
|
+
assert !climate_state.fan_on?
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class ConnectionTest < Test::Unit::TestCase
|
4
|
+
USER = "user@example.com"
|
5
|
+
PASSWORD = "password"
|
6
|
+
RECORD_MODE = :new_episodes
|
7
|
+
|
8
|
+
def test_vehicles
|
9
|
+
VCR.use_cassette('connection', :record => RECORD_MODE) do
|
10
|
+
connection = TeslaAPI::Connection.new(USER, PASSWORD)
|
11
|
+
|
12
|
+
assert connection.vehicles.size > 0
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_vehicle
|
17
|
+
VCR.use_cassette('connection', :record => RECORD_MODE) do
|
18
|
+
connection = TeslaAPI::Connection.new(USER, PASSWORD)
|
19
|
+
|
20
|
+
assert connection.vehicle
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_logged_in
|
25
|
+
VCR.use_cassette('connection', :record => RECORD_MODE) do
|
26
|
+
connection = TeslaAPI::Connection.new(USER, PASSWORD)
|
27
|
+
|
28
|
+
assert connection.logged_in?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class DriveStateTest < Test::Unit::TestCase
|
4
|
+
USER = "user@example.com"
|
5
|
+
PASSWORD = "password"
|
6
|
+
RECORD_MODE = :new_episodes
|
7
|
+
|
8
|
+
def drive_state
|
9
|
+
@drive_state ||= begin
|
10
|
+
VCR.use_cassette('drive_state', :record => RECORD_MODE) do
|
11
|
+
TeslaAPI::Connection.new(USER, PASSWORD).vehicle.drive_state
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_shift_state
|
17
|
+
assert_equal nil, drive_state.shift_state
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_speed
|
21
|
+
assert_equal nil, drive_state.speed
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_latitude
|
25
|
+
assert_equal 17.82365, drive_state.latitude
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_longitude
|
29
|
+
assert_equal -72.752896, drive_state.longitude
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_heading
|
33
|
+
assert_equal 180, drive_state.heading
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class GuiSettingsTest < Test::Unit::TestCase
|
4
|
+
USER = "user@example.com"
|
5
|
+
PASSWORD = "password"
|
6
|
+
RECORD_MODE = :new_episodes
|
7
|
+
|
8
|
+
def gui_settings
|
9
|
+
@gui_settings ||= begin
|
10
|
+
VCR.use_cassette('gui_settings', :record => RECORD_MODE) do
|
11
|
+
TeslaAPI::Connection.new(USER, PASSWORD).vehicle.gui_settings
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_gui_range_display
|
17
|
+
assert_equal "Rated", gui_settings.gui_range_display
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_gui_charge_rate_units
|
21
|
+
assert_equal "kW", gui_settings.gui_charge_rate_units
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_gui_temperature_units
|
25
|
+
assert_equal "F", gui_settings.gui_temperature_units
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_gui_distance_units
|
29
|
+
assert_equal "mi/hr", gui_settings.gui_distance_units
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_gui_24_hour_time
|
33
|
+
assert !gui_settings.gui_24_hour_time?
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class VehicleTest < Test::Unit::TestCase
|
4
|
+
USER = "user@example.com"
|
5
|
+
PASSWORD = "password"
|
6
|
+
RECORD_MODE = :new_episodes
|
7
|
+
|
8
|
+
def vehicle
|
9
|
+
@vehicle ||= begin
|
10
|
+
VCR.use_cassette('vehicle', :record => RECORD_MODE) do
|
11
|
+
TeslaAPI::Connection.new(USER, PASSWORD).vehicle
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_vin
|
17
|
+
assert_equal "5YJSA", vehicle.vin
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_online_state
|
21
|
+
assert_equal "online", vehicle.online_state
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_option_codes
|
25
|
+
assert_equal ["MS01","RENA"], vehicle.option_codes
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_option_code_descriptions
|
29
|
+
assert_equal "base, region_us", vehicle.option_code_descriptions
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class VehicleStateTest < Test::Unit::TestCase
|
4
|
+
USER = "user@example.com"
|
5
|
+
PASSWORD = "password"
|
6
|
+
RECORD_MODE = :new_episodes
|
7
|
+
|
8
|
+
def vehicle_state
|
9
|
+
@vehicle_state ||= begin
|
10
|
+
VCR.use_cassette('vehicle_state', :record => RECORD_MODE) do
|
11
|
+
TeslaAPI::Connection.new(USER, PASSWORD).vehicle.state
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_firmware_version
|
17
|
+
assert_equal "1.19.42", vehicle_state.firmware_version
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_nineteen_inch_wheels
|
21
|
+
assert vehicle_state.nineteen_inch_wheels?
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_panoramic
|
25
|
+
assert vehicle_state.panoramic?
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_perf
|
29
|
+
assert !vehicle_state.perf?
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_spoiler
|
33
|
+
assert !vehicle_state.spoiler?
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_dark_rims
|
37
|
+
assert !vehicle_state.dark_rims?
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_locked
|
41
|
+
assert vehicle_state.locked?
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_rear_trunk_open
|
45
|
+
assert !vehicle_state.rear_trunk_open?
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_rear_trunk_open
|
49
|
+
assert !vehicle_state.rear_trunk_open?
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_passenger_front_door_open?
|
53
|
+
assert !vehicle_state.passenger_front_door_open?
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_passenger_rear_door_open?
|
57
|
+
assert !vehicle_state.passenger_rear_door_open?
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_driver_front_door_open?
|
61
|
+
assert !vehicle_state.driver_front_door_open?
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_driver_rear_door_open?
|
65
|
+
assert !vehicle_state.driver_rear_door_open?
|
66
|
+
end
|
67
|
+
|
68
|
+
def test_sun_roof_percent_open
|
69
|
+
assert_equal 0, vehicle_state.sun_roof_percent_open
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_sun_roof_state
|
73
|
+
assert_equal "unknown", vehicle_state.sun_roof_state
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_sun_roof_installed?
|
77
|
+
assert vehicle_state.sun_roof_installed?
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
metadata
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: tesla-api
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Gavin Stark
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: httpclient
|
16
|
+
prerelease: false
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 2.3.2
|
22
|
+
none: false
|
23
|
+
type: :runtime
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: 2.3.2
|
29
|
+
none: false
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: vcr
|
32
|
+
prerelease: false
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 2.4.0
|
38
|
+
none: false
|
39
|
+
type: :development
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ~>
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 2.4.0
|
45
|
+
none: false
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: webmock
|
48
|
+
prerelease: false
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ~>
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 1.9.1
|
54
|
+
none: false
|
55
|
+
type: :development
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ~>
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 1.9.1
|
61
|
+
none: false
|
62
|
+
description: Implements the Tesla Model S HTTP API
|
63
|
+
email:
|
64
|
+
- gavin@gstark.com
|
65
|
+
executables: []
|
66
|
+
extensions: []
|
67
|
+
extra_rdoc_files: []
|
68
|
+
files:
|
69
|
+
- .gitignore
|
70
|
+
- Gemfile
|
71
|
+
- LICENSE.txt
|
72
|
+
- README.rdoc
|
73
|
+
- Rakefile
|
74
|
+
- fixtures/vcr_cassettes/charge_state.yml
|
75
|
+
- fixtures/vcr_cassettes/climate_state.yml
|
76
|
+
- fixtures/vcr_cassettes/connection.yml
|
77
|
+
- fixtures/vcr_cassettes/drive_state.yml
|
78
|
+
- fixtures/vcr_cassettes/gui_settings.yml
|
79
|
+
- fixtures/vcr_cassettes/vehicle.yml
|
80
|
+
- fixtures/vcr_cassettes/vehicle_state.yml
|
81
|
+
- lib/tesla-api.rb
|
82
|
+
- lib/tesla-api/charge_state.rb
|
83
|
+
- lib/tesla-api/climate_state.rb
|
84
|
+
- lib/tesla-api/connection.rb
|
85
|
+
- lib/tesla-api/data.rb
|
86
|
+
- lib/tesla-api/drive_state.rb
|
87
|
+
- lib/tesla-api/errors.rb
|
88
|
+
- lib/tesla-api/gui_settings.rb
|
89
|
+
- lib/tesla-api/private_api.rb
|
90
|
+
- lib/tesla-api/tesla_api.rb
|
91
|
+
- lib/tesla-api/vehicle.rb
|
92
|
+
- lib/tesla-api/vehicle_state.rb
|
93
|
+
- lib/tesla-api/version.rb
|
94
|
+
- tesla-api.gemspec
|
95
|
+
- test/helper.rb
|
96
|
+
- test/test_charge_state.rb
|
97
|
+
- test/test_climate_state.rb
|
98
|
+
- test/test_connection.rb
|
99
|
+
- test/test_drive_state.rb
|
100
|
+
- test/test_gui_settings.rb
|
101
|
+
- test/test_vehicle.rb
|
102
|
+
- test/test_vehicle_state.rb
|
103
|
+
homepage: ''
|
104
|
+
licenses: []
|
105
|
+
post_install_message:
|
106
|
+
rdoc_options: []
|
107
|
+
require_paths:
|
108
|
+
- lib
|
109
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
none: false
|
115
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
none: false
|
121
|
+
requirements: []
|
122
|
+
rubyforge_project:
|
123
|
+
rubygems_version: 1.8.24
|
124
|
+
signing_key:
|
125
|
+
specification_version: 3
|
126
|
+
summary: Implements the Tesla Model S HTTP API
|
127
|
+
test_files:
|
128
|
+
- test/helper.rb
|
129
|
+
- test/test_charge_state.rb
|
130
|
+
- test/test_climate_state.rb
|
131
|
+
- test/test_connection.rb
|
132
|
+
- test/test_drive_state.rb
|
133
|
+
- test/test_gui_settings.rb
|
134
|
+
- test/test_vehicle.rb
|
135
|
+
- test/test_vehicle_state.rb
|