# lol-client-java-api **Repository Path**: ying920/lol-client-java-api ## Basic Information - **Project Name**: lol-client-java-api - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-02-04 - **Last Updated**: 2022-02-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README lol-client-java-api ---------- [![Build Status](https://travis-ci.org/stirante/lol-client-java-api.svg?branch=master)](https://travis-ci.org/stirante/lol-client-java-api) [![lol-client-java-api](https://jitpack.io/v/stirante/lol-client-java-api.svg)](https://jitpack.io/#stirante/lol-client-java-api) ---------- Simple library which provides access to internal League of Legends Client API. ## Disclaimer This product is not endorsed, certified or otherwise approved in any way by Riot Games, Inc. or any of its affiliates. ## Requirements **lol-client-java-api** requires at least Java 8 and works only on Windows. ## Setup This project is available on [Jitpack](https://jitpack.io/#stirante/lol-client-java-api/1.1.7) ### Gradle Add Jitpack to your root build.gradle at the end of repositories: ```java allprojects { repositories { ... maven { url 'https://jitpack.io' } } } ``` Add the project as a dependency: ```java dependencies { compile 'com.github.stirante:lol-client-java-api:1.2.3' } ``` ### Maven Add Jitpack as a repository: ```xml jitpack.io https://jitpack.io ``` Add the project as a dependency: ```xml com.github.stirante lol-client-java-api 1.2.3 ``` #### Snapshots Snapshots of all the latest changes are available in my personal nexus repository. ```xml stirante-nexus-snapshots https://nexus.stirante.com/repository/maven-snapshots/ ``` ```xml com.stirante lol-client-java-api 1.2.4-SNAPSHOT ``` ## Usage This library depends on League of Legends client and requires it to be open while using this API. ```java package examples; import com.stirante.lolclient.ClientApi; import com.stirante.lolclient.ClientConnectionListener; import generated.LolChampionsCollectionsChampion; import generated.LolChampionsCollectionsChampionSkin; import generated.LolSummonerSummoner; import java.text.SimpleDateFormat; import java.util.Date; public class SkinListExample { private static final SimpleDateFormat FORMATTER = new SimpleDateFormat("dd-MM-yyyy"); /** * Simple example, which show all owned champions and skins (with purchase date) */ public static void main(String[] args) { //Initialize API ClientApi api = new ClientApi(); api.addClientConnectionListener(new ClientConnectionListener() { @Override public void onClientConnected() { try { //Check if user is logged in if (!api.isAuthorized()) { System.out.println("Not logged in!"); return; } //Get current summoner LolSummonerSummoner summoner = api.executeGet("/lol-summoner/v1/current-summoner", LolSummonerSummoner.class).getResponseObject(); //Get champion collection of summoner LolChampionsCollectionsChampion[] champions = api.executeGet( "/lol-champions/v1/inventories/" + summoner.summonerId + "/champions", LolChampionsCollectionsChampion[].class).getResponseObject(); for (LolChampionsCollectionsChampion champion : champions) { if (champion.ownership.owned) { System.out.println(champion.name + " purchased on " + FORMATTER.format(new Date(champion.ownership.rental.purchaseDate))); for (LolChampionsCollectionsChampionSkin skin : champion.skins) { if (!skin.isBase && skin.ownership.owned) { System.out.println("\t" + skin.name + " purchased on " + FORMATTER.format(new Date(skin.ownership.rental.purchaseDate))); } } } } api.stop(); } catch (Exception e) { e.printStackTrace(); } } @Override public void onClientDisconnected() { } }); } } ``` This library is still under development and lacks many features. Right now to access them, use these methods. ```java package examples; import com.stirante.lolclient.ClientApi; import com.stirante.lolclient.ClientConnectionListener; import generated.LolChatUserResource; import java.io.IOException; public class DirectAccessExample { /** * Simple example, which shows how to access API directly */ public static void main(String[] args) { //Initialize API ClientApi api = new ClientApi(); //Add listener, which will notify us about client connection available api.addClientConnectionListener(new ClientConnectionListener() { @Override public void onClientConnected() { try { //Get current user chat info ApiResponse user = api.executeGet("/lol-chat/v1/me", LolChatUserResource.class); //Print status message System.out.println(user.getRawResponse()); api.stop(); } catch (Exception e) { e.printStackTrace(); } } @Override public void onClientDisconnected() { } }); } } ``` All possible paths can be found in ```api.getSwaggerJson()``` or ```api.getOpenapiJson()```. (In order to enable this, you need to add ```enable_swagger: true``` to ```Riot Games\League of Legends\RADS\projects\league_client\releases\\deploy\system.yaml```) All classes in ```generated``` package were generated from OpenAPI JSON. To regenerate all classes, run League of Legends client with access to swagger and run ``` mvn clean compile exec:java ``` All examples are in ```examples``` package. Library contains very simple command line interface which can be used like this ``` java -jar lol-client-java-api.jar -p PATH -m METHOD ``` Example: ``` java -jar lol-client-java-api.jar -p rso-auth/v1/authorization -m GET ``` Library also allows for listening to events from League of Legends client ```java package examples; import com.stirante.lolclient.ClientApi; import com.stirante.lolclient.ClientConnectionListener; import com.stirante.lolclient.ClientWebSocket; import java.io.BufferedReader; import java.io.InputStreamReader; public class WebSocketExample { private static ClientWebSocket socket; /** * Simple example showing how to receive websocket events from client */ public static void main(String[] args) throws Exception { //Initialize API ClientApi api = new ClientApi(); api.addClientConnectionListener(new ClientConnectionListener() { @Override public void onClientConnected() { System.out.println("Client connected"); try { //open web socket socket = api.openWebSocket(); //add event handler, which prints every received event socket.setSocketListener(new ClientWebSocket.SocketListener() { @Override public void onEvent(ClientWebSocket.Event event) { System.out.println(event); } @Override public void onClose(int code, String reason) { System.out.println("Socket closed, reason: " + reason); } }); } catch (Exception e) { e.printStackTrace(); } } @Override public void onClientDisconnected() { System.out.println("Client disconnected"); socket.close(); } }); //close socket when user enters something into console BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); reader.readLine(); api.stop(); socket.close(); } } ``` ## Live game API Since version 1.2.0, this api allows for requesting live game data. The example is in `src/main/java/examples/IngameApiExample.java`. To check how it's working, run this example while in game. A generated documentation can be found [here](https://files.stirante.com/ingame-api.html) (not generated by me). Generated models for live game API are in `generated.live` package (It's not very useful right now, because the schema in the documentation is lacking. I hope it will be added in the future). ## Contributing All contributions are appreciated. If you would like to contribute to this project, please send a pull request. ## Contact Have a suggestion, complaint, or question? Open an [issue](https://github.com/stirante/lol-client-java-api/issues).