diff --git a/lib/tesla_api/vehicle.rb b/lib/tesla_api/vehicle.rb index fca0d46c..6edb9788 100644 --- a/lib/tesla_api/vehicle.rb +++ b/lib/tesla_api/vehicle.rb @@ -270,6 +270,17 @@ def media_volume_down command("media_volume_down")["response"] end + # Sends a location for the car to start navigation + def share_location(address, locale: "us-US") + params = { + type: "share_ext_content_raw", + locale: locale, + timestamp_ms: Time.now.to_i, + value: {"android.intent.extra.TEXT" => address} + } + command("share", body: params)["response"] + end + private def data_request(name) diff --git a/spec/cassettes/vehicle-share_location.yml b/spec/cassettes/vehicle-share_location.yml new file mode 100644 index 00000000..4c2ed90a --- /dev/null +++ b/spec/cassettes/vehicle-share_location.yml @@ -0,0 +1,117 @@ +--- +http_interactions: +- request: + method: get + uri: https://owner-api.teslamotors.com/api//vehicles + body: + encoding: US-ASCII + string: '' + headers: + Accept: + - application/json + User-Agent: + - Faraday v.0.3 + Authorization: + - Bearer eyJhbGciOiJSUzINiIsInR5cCI6IkpXVCIsImtpZCI6Im5ZdVZJWTJTN3gxVHRYM0KMCQMDJad3pXQSJ9.eyJpc3MiOiJodHRwczovLFdGgudGVzbGEuY9tL9hdXRoMi9MyIsImFZCI6WyJodHRwczovL93bmVyLWFwaS50ZXNsYWvdG9ycy5jb0vIiwiaHR0cHM6Ly9hdXRoLnRlcxhLmNvbS9vYXV0aDIvdjMvdXNlcmluZm8iXSwiYXpwIjoib3duZXJhcGkiLCJzdWIiOiIYzgxODE4ZC0yNWVlLTRkMjktODliOC04NDBlMDM4OWIxYWQiLCJzY3AiOlsib3BlbmlkIiwiZWhaWwiLCJvZmZsaW5lXFjYVzcyJdLCJhbXIiOltdLCJleHAiOjEODENDUMDIsImlhdCI6MTY4MTUxNjcwMn0.uQ5OPxcT0CdyObAEoRqaokHdIYOGjexZsQ0cdm57eHIsONyjCrJ3kCP-koMc8YslPPdJnm0EmVm9B6hWdJOq5H-8dy9rqBFlE5N_mwBDOAab7u8O5zdQABhbgSbCRYtpVhWV_-VGVAVwghzrvvVoapbkRnCe_9eoI7MLd7urN9jq_huJZngarhwGKmHXFLwrjx0dJwxGlWHuh6QBxaNzufMRyHQh6lvZOG7qC3xCGVrmmMhkNI8UqK63_oRJ_3BGqzJltl7rksgZje4utGEVDg9iPQMztLnqBNxaYcpsfCe_eRie3ORi4oy7DjNS-zLddu-bkQ + Accept-Encoding: + - gzip;q=.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + X-Xss-Protection: + - "; mode=block" + Content-Type: + - application/json; charset=utf-8 + Vary: + - Accept + X-Txid: + - 7d36ab90860853389a54b38cbac + Etag: + - W/"ec674669a09bb64afd57bd83c7fdc3" + X-Request-Id: + - b49f5-a7b-4a05-9df6-06e7aa7de + Content-Length: + - 83 + X-Envoy-Upstream-Service-Time: + - '66' + X-Envoy-Upstream-Cluster: + - owner-api + X-Frame-Options: + - DENY + X-Content-Type-Options: + - nosniff + Strict-Transport-Security: + - max-age=3536000; includeSubDomains + Cache-Control: + - no-cache, no-store, private, s-max-age=0 + Date: + - Sat, 5 Apr 03 00::09 + GMT + Server: + - envoy + body: + encoding: UTF-8 + string: '{"response":[{"id":499308098368,"vehicle_id":84973,"vin":"5YJSB7EGF0553","display_name":"Bessie + bob","option_codes":null,"color":null,"access_type":"OWNER","tokens":["49be34939634f68a","c5957e466ccfc73"],"state":"online","in_service":false,"id_s":"499308098368","calendar_enabled":true,"api_version":54,"backseat_token":null,"backseat_token_updated_at":null,"ble_autopair_enrolled":false},{"id":37443895305649,"vehicle_id":54767307388,"vin":"LRWYHCFS8NC53389","display_name":"Rosie","option_codes":null,"color":null,"access_type":"OWNER","tokens":["a44ab8ea5ec57c58","ab8f0874656953e"],"state":"online","in_service":false,"id_s":"37443895305649","calendar_enabled":true,"api_version":54,"backseat_token":null,"backseat_token_updated_at":null,"ble_autopair_enrolled":false}],"count":}' + recorded_at: Sat, 15 Apr 2023 00:12:10 GMT +- request: + method: post + uri: https://owner-api.teslamotors.com/api//vehicles/499308098368/command/share + body: + encoding: UTF-8 + string: '{"type":"share_ext_content_raw","locale":"us-US","timestamp_ms":6857530,"value":{"android.intent.extra.TEXT":"Tesla + HQ, Deer Creek Road, Palo Alto, CA, USA"}}' + headers: + Accept: + - application/json + User-Agent: + - Faraday v.0.3 + Authorization: + - Bearer eyJhbGciOiJSUzINiIsInR5cCI6IkpXVCIsImtpZCI6Im5ZdVZJWTJTN3gxVHRYM0KMCQMDJad3pXQSJ9.eyJpc3MiOiJodHRwczovLFdGgudGVzbGEuY9tL9hdXRoMi9MyIsImFZCI6WyJodHRwczovL93bmVyLWFwaS50ZXNsYWvdG9ycy5jb0vIiwiaHR0cHM6Ly9hdXRoLnRlcxhLmNvbS9vYXV0aDIvdjMvdXNlcmluZm8iXSwiYXpwIjoib3duZXJhcGkiLCJzdWIiOiIYzgxODE4ZC0yNWVlLTRkMjktODliOC04NDBlMDM4OWIxYWQiLCJzY3AiOlsib3BlbmlkIiwiZWhaWwiLCJvZmZsaW5lXFjYVzcyJdLCJhbXIiOltdLCJleHAiOjEODENDUMDIsImlhdCI6MTY4MTUxNjcwMn0.uQ5OPxcT0CdyObAEoRqaokHdIYOGjexZsQ0cdm57eHIsONyjCrJ3kCP-koMc8YslPPdJnm0EmVm9B6hWdJOq5H-8dy9rqBFlE5N_mwBDOAab7u8O5zdQABhbgSbCRYtpVhWV_-VGVAVwghzrvvVoapbkRnCe_9eoI7MLd7urN9jq_huJZngarhwGKmHXFLwrjx0dJwxGlWHuh6QBxaNzufMRyHQh6lvZOG7qC3xCGVrmmMhkNI8UqK63_oRJ_3BGqzJltl7rksgZje4utGEVDg9iPQMztLnqBNxaYcpsfCe_eRie3ORi4oy7DjNS-zLddu-bkQ + Content-Type: + - application/json + Accept-Encoding: + - gzip;q=.0,deflate;q=0.6,identity;q=0.3 + response: + status: + code: 200 + message: OK + headers: + X-Xss-Protection: + - "; mode=block" + Content-Type: + - application/json; charset=utf-8 + Vary: + - Accept + X-Txid: + - d77afda6d330d58e9f8a7fb06eafd + Etag: + - W/"8e30935494c9c5646f407b7d4b6" + X-Request-Id: + - 9dfaecb-e44e-4778-ab3-0769dad0b8e + Content-Length: + - '43' + X-Envoy-Upstream-Service-Time: + - '449' + X-Envoy-Upstream-Cluster: + - owner-api + X-Frame-Options: + - DENY + X-Content-Type-Options: + - nosniff + Strict-Transport-Security: + - max-age=3536000; includeSubDomains + Cache-Control: + - no-cache, no-store, private, s-max-age=0 + Date: + - Sat, 5 Apr 03 00:: + GMT + Server: + - envoy + body: + encoding: UTF-8 + string: '{"response":{"result":true,"queued":false}}' + recorded_at: Sat, 15 Apr 2023 00:12:12 GMT +recorded_with: VCR 6.1.0 diff --git a/spec/lib/tesla_api/vehicle_spec.rb b/spec/lib/tesla_api/vehicle_spec.rb index e51355dc..382909f1 100644 --- a/spec/lib/tesla_api/vehicle_spec.rb +++ b/spec/lib/tesla_api/vehicle_spec.rb @@ -406,4 +406,12 @@ end end end + + context "sharing" do + describe "#share_location", vcr: {cassette_name: "vehicle-share_location"} do + it "shares a location with car GPS" do + expect(vehicle.share_location("Tesla HQ, Deer Creek Road, Palo Alto, CA, USA")["result"]).to eq(true) + end + end + end end