UNPKG

teslajs

Version:

Full-featured Tesla REST API NodeJS package

105 lines (85 loc) 3.41 kB
//===================================================================== // This sample framework is used to demonstrate using TeslaJS // // https://github.com/mseminatore/TeslaJS // // Copyright (c) 2016 Mark Seminatore // // Refer to included LICENSE file for usage rights and restrictions //===================================================================== "use strict"; var fs = require('fs'); var tjs = require('../teslajs'); require('colors'); function logo() { console.log("\n"); console.log("TTTTT EEEEE SSSSS L AAAAA J SSSSS"); console.log(" T EEEEE S L AAAAA J S"); console.log(" TTT s L J S"); console.log(" T EEEEE SSSSS L AAAAA J SSSSS"); console.log(" T S L A A J S"); console.log(" T EEEEE S L A A J J S"); console.log(" T EEEEE SSSSS LLLLL A A JJJJJ SSSSS"); console.log("========================================="); } exports.SampleFramework = function SampleFramework(program, main) { this.program = program; this.tokenFound = false; this.main = main; this.login_cb = function (err, result) { if (result.error) { console.error("Login failed!".red); console.warn(JSON.stringify(result.error)); return; } logo(); var options = { authToken: result.authToken }; tjs.vehicles(options, function (err, vehicles) { if (err) { console.log("\nError: " + err.red); return; } var vehicle = vehicles[program.index || 0]; options.vehicleID = vehicle.id_s; options.vehicle_id = vehicle.vehicle_id; options.tokens = vehicle.tokens; if (vehicle.state.toUpperCase() == "OFFLINE") { console.log("\nResult: " + "Unable to contact vehicle, exiting!".bold.red); return; } var carType = tjs.getModel(vehicle); console.log("\nVehicle " + vehicle.vin.green + " - " + carType.green + " ( '" + vehicle.display_name.cyan + "' ) is: " + vehicle.state.toUpperCase().bold.green); if (main) { main(tjs, options); } }); } this.run = function () { try { this.tokenFound = fs.statSync('.token').isFile(); } catch (e) { } if (program.uri) { console.log("Setting portal URI to: " + program.uri); tjs.setPortalBaseURI(program.uri); } if (this.tokenFound) { var fileStr = fs.readFileSync('.token', 'utf8'); var token = JSON.parse(fileStr); if (!token) { program.help(); } if (token.access_token) { token = token.access_token; } this.login_cb(null, { error: false, authToken: token }); } else { var username = program.username || process.env.TESLAJS_USER; var password = program.password || process.env.TESLAJS_PASS; if (!username || !password) { program.help(); } tjs.login(username, password, this.login_cb); } } }