Giter VIP home page Giter VIP logo

tesla-api-client's Introduction

tesla-api-client

Java library for interfacing with the Tesla Owner API.

This library is generated using swagger-codegen. See swagger.yml to view the Swagger document used to generate the library.

Building Library from Swagger

  1. If not already installed, install or obtain a release of swagger-codegen If on Mac and using Homebrew, you can use brew install swagger-codegen
  2. Generate the library
    swagger-codegen generate \
    -i swagger.yml -l java -o . \
    --library retrofit2 --api-package com.github.jonahwh.tesla-api-client \
    --model-package com.github.jonahwh.tesla-api-client.model
    This will generate the library.
  3. Build the library
    gradle assemble # or `chmod +x ./gradlew && ./gradlew assemble`
  4. The library will be built in build/libs/

Installation

Gradle

compile 'com.github.jonahwh:tesla-api-client:1.13.3'

Maven

<dependency>
    <groupId>com.github.jonahwh</groupId>
    <artifactId>tesla-api-client</artifactId>
    <version>1.13.3</version>
</dependency>

Usage

Here is an example of how this library can be used to make requests to the Tesla API.

import com.github.jonahwh.ApiClient;
import com.github.jonahwh.tesla_api_client.AuthenticationApi;
import com.github.jonahwh.tesla_api_client.VehicleCommandsApi;
import com.github.jonahwh.tesla_api_client.VehiclesApi;
import com.github.jonahwh.tesla_api_client.model.CreateAccessTokenRequest;
import com.github.jonahwh.tesla_api_client.model.CreateAccessTokenResponse;
import com.github.jonahwh.tesla_api_client.model.GetVehiclesResponse;

import org.jetbrains.annotations.NotNull;

import java.io.IOException;

import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

class TeslaApiClientExample {
    public static void main(String[] args) throws IOException {
        // Anonymous API Client for Authentication
        ApiClient anonymousApiClient = new ApiClient();
        anonymousApiClient.createDefaultAdapter();
        anonymousApiClient.configureFromOkclient(new OkHttpClient.Builder().build());

        // Authenticated API Client
        ApiClient authedApiClient = new ApiClient();
        authedApiClient.createDefaultAdapter();
        authedApiClient.configureFromOkclient(
                new OkHttpClient.Builder().addInterceptor(new AuthenticationInterceptor()).build()
        );

        AuthenticationApi authApi = anonymousApiClient.createService(AuthenticationApi.class);
        VehiclesApi vehiclesApi = authedApiClient.createService(VehiclesApi.class);
        VehicleCommandsApi commandsApi = authedApiClient.createService(VehicleCommandsApi.class);

        // TESLA_CLIENT_ID and TESLA_CLIENT_SECRET are available here: https://pastebin.com/YiLPDggh
        CreateAccessTokenRequest request = new CreateAccessTokenRequest()
                .grantType("password") // Do not change
                .clientId("TESLA_CLIENT_ID")
                .clientSecret("TESLA_CLIENT_SECRET")
                .email("[email protected]") // Tesla API User's email
                .password("password123"); // Tesla API User's password


        CreateAccessTokenResponse body = authApi.createOauthToken(request).execute().body();
        if (body != null) {
            // Tesla API Access Token for this account. You'll need to make this available to the
            // AuthenticationInterceptor
            String accessToken = body.getAccessToken();

            // Get the list of vehicles in the user's account
            GetVehiclesResponse vehicles = vehiclesApi.getVehicles().execute().body();
            if (vehicles != null) {
                // Get the ID of the first vehicle in the user's account.
                String vehicleId = vehicles.getResponse().get(0).getVehicleId();

                // Flash that vehicle's headlights
                commandsApi.flashLights(vehicleId);
            }
        }
    }
}

class AuthenticationInterceptor implements Interceptor {
    @NotNull
    @Override
    public Response intercept(@NotNull Chain chain) {
        Request.Builder builder = chain.request().newBuilder();

        // TODO: Get accessToken from CreateAccessTokenResponse here
        String accessToken = "";

        builder.addHeader("Authorization", String.format("Bearer %s", accessToken));
    }
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.