Skip to content

Commit

Permalink
Add possibility to get the assets from LCU API with example and updat…
Browse files Browse the repository at this point in the history
…e generated classes to version 9.16
  • Loading branch information
stirante committed Aug 20, 2019
1 parent 09e5872 commit 74a76a3
Show file tree
Hide file tree
Showing 62 changed files with 341 additions and 174 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ This product is not endorsed, certified or otherwise approved in any way by Riot

## Setup

This project is available on [Jitpack](https://jitpack.io/#stirante/lol-client-java-api/1.0.3)
This project is available on [Jitpack](https://jitpack.io/#stirante/lol-client-java-api/1.1.4)

### Gradle

Expand All @@ -33,7 +33,7 @@ Add the project as a dependency:

```java
dependencies {
compile 'com.github.stirante:lol-client-java-api:1.1.2'
compile 'com.github.stirante:lol-client-java-api:1.1.4'
}
```

Expand All @@ -56,7 +56,7 @@ Add the project as a dependency:
<dependency>
<groupId>com.github.stirante</groupId>
<artifactId>lol-client-java-api</artifactId>
<version>1.1.2</version>
<version>1.1.4</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.stirante</groupId>
<artifactId>lol-client-java-api</artifactId>
<version>1.1.3</version>
<version>1.1.4</version>

<properties>
<java.version>1.8</java.version>
Expand Down
48 changes: 32 additions & 16 deletions src/main/java/com/stirante/lolclient/ClientApi.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,20 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import generated.*;
import org.apache.http.NameValuePair;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.entity.EntityBuilder;
import org.apache.http.client.methods.*;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.ContentType;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import javax.net.ssl.*;
import java.io.*;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.FileSystems;
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
Expand Down Expand Up @@ -504,6 +503,10 @@ private <T> T decodeResponse(InputStream in, Class<T> clz) throws IOException {
}
}

public InputStream getAsset(String plugin, String path) throws IOException {
return executeBinaryGet(plugin + "/assets/" + URLEncoder.encode(path, StandardCharsets.UTF_8.name()));
}

public boolean isAuthorized() throws IOException {
try {
return executeGet("/lol-summoner/v1/current-summoner", LolSummonerSummoner.class).accountId > 0;
Expand All @@ -525,6 +528,17 @@ public <T> T executeGet(String path, Class<T> clz) throws IOException {
return getResponseObject(clz, conn);
}

public InputStream executeBinaryGet(String path) throws IOException {
HttpGet conn = getConnection(path, new HttpGet());
CloseableHttpResponse response = client.execute(conn);
boolean b = response.getStatusLine().getStatusCode() == 200;
if (!b) {
EntityUtils.consume(response.getEntity());
return null;
}
return response.getEntity().getContent();
}

public <T> T executeGet(String path, Class<T> clz, String... queryParams) throws IOException {
HttpGet conn = getConnection(path, new HttpGet(), queryParams);
return getResponseObject(clz, conn);
Expand Down Expand Up @@ -600,26 +614,29 @@ private <T extends HttpRequestBase> boolean isOk(T method) throws IOException {
/**
* Prepares Http request with proper URL and authorization.
* Simple usage: getConnection("/endpoint", new HttpGet(), "key1", "value1", key2", "value2")
* @param endpoint endpoint
* @param method Base request
*
* @param endpoint endpoint
* @param method Base request
* @param queryParams Pairs of get parameters. Must be divisible by 2.
*/
private <T extends HttpRequestBase> T getConnection(String endpoint, T method, String... queryParams) {
if (!connected.get()) {
throw new IllegalStateException("API not connected!");
}
try {
List<NameValuePair> params = new ArrayList<>();
StringBuilder sb = new StringBuilder("https://127.0.0.1:").append(port).append("/").append(endpoint);
boolean addedParams = false;
for (int i = 0; i < queryParams.length; i += 2) {
params.add(new BasicNameValuePair(queryParams[i], queryParams[i + 1]));
if (!addedParams) {
sb.append("?");
addedParams = true;
}
else {
sb.append("&");
}
sb.append(queryParams[i]).append("=").append(queryParams[i + 1]);
}
URI uri = new URIBuilder()
.setScheme("https")
.setHost("127.0.0.1")
.setPath(endpoint)
.setPort(port)
.addParameters(params)
.build();
URI uri = new URI(sb.toString());
if (!disableEndpointWarnings.get()) {
String path = uri.getPath().substring(1, uri.getPath().substring(1).indexOf('/') + 1);
if (!ALLOWED_ENDPOINTS.contains(path)) {
Expand All @@ -632,8 +649,7 @@ private <T extends HttpRequestBase> T getConnection(String endpoint, T method, S
}
method.setURI(uri);
method.addHeader("Authorization", "Basic " + token);
method.addHeader("Content-Type", "application/json");
method.addHeader("Accept", "application/json");
method.addHeader("Accept", "*/*");
method.setConfig(requestConfig);
return method;
} catch (URISyntaxException e) {
Expand Down
43 changes: 43 additions & 0 deletions src/main/java/examples/AssetsExample.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package examples;

import com.stirante.lolclient.ClientApi;
import com.stirante.lolclient.ClientConnectionListener;

import java.io.File;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.StandardCopyOption;

public class AssetsExample {

/**
* Simple example, which shows how to access assets from LCU API
*/
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 "v1/champion-splashes/1/1000.jpg" (Annie's centered splash art) from plugin "lol-game-data"
//Result will be this: http://raw.communitydragon.org/latest/plugins/rcp-be-lol-game-data/global/default/v1/champion-splashes/2/2000.jpg
InputStream input = api.getAsset("lol-game-data", "v1/champion-splashes/1/1000.jpg");
//Save file locally
Files.copy(input, new File("Annie.jpg").toPath(), StandardCopyOption.REPLACE_EXISTING);
//Close stream
input.close();
api.stop();
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void onClientDisconnected() {

}
});
}
}
8 changes: 0 additions & 8 deletions src/main/java/generated/CollectionsLcdsSlotEntry.java

This file was deleted.

11 changes: 0 additions & 11 deletions src/main/java/generated/CollectionsLcdsSpellBookDTO.java

This file was deleted.

14 changes: 0 additions & 14 deletions src/main/java/generated/CollectionsLcdsSpellBookPageDTO.java

This file was deleted.

11 changes: 0 additions & 11 deletions src/main/java/generated/CollectionsLcdsSummonerRune.java

This file was deleted.

11 changes: 0 additions & 11 deletions src/main/java/generated/CollectionsLcdsSummonerRuneInventory.java

This file was deleted.

2 changes: 2 additions & 0 deletions src/main/java/generated/LolChatBlocked.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

public class LolChatBlocked {

public String game_name;
public String game_tag;
public String name;
public String pid;

Expand Down
3 changes: 3 additions & 0 deletions src/main/java/generated/LolChatBlockedPlayerResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

public class LolChatBlockedPlayerResource {

public String gameName;
public String gameTag;
public Long id;
public String name;
public String pid;

}
2 changes: 2 additions & 0 deletions src/main/java/generated/LolChatChatMessage.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ public class LolChatChatMessage {

public String body;
public String cid;
public String game_name;
public String game_tag;
public String id;
public String mid;
public String name;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ public class LolChatConversationMessageResource {

public String body;
public Long fromId;
public String fromPid;
public String id;
public Boolean isHistorical;
public String timestamp;
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/generated/LolChatConversationResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@

public class LolChatConversationResource {

public String gameName;
public String gameTag;
public String id;
public String inviterId;
public Boolean isMuted;
public LolChatConversationMessageResource lastMessage;
public String name;
public String password;
public String pid;
public String type;
public Long unreadMessageCount;

Expand Down
2 changes: 2 additions & 0 deletions src/main/java/generated/LolChatFriend.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
public class LolChatFriend {

public String displayGroup;
public String game_name;
public String game_tag;
public String group;
public String name;
public String note;
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/generated/LolChatFriendRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

public class LolChatFriendRequest {

public String game_name;
public String game_tag;
public String name;
public String note;
public String pid;
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/generated/LolChatFriendRequestAdd.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

public class LolChatFriendRequestAdd {

public String game_name;
public String game_tag;
public String name;
public String note;
public String pid;
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/generated/LolChatFriendRequestResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@
public class LolChatFriendRequestResource {

public LolChatFriendRequestDirection direction;
public String gameName;
public String gameTag;
public Long id;
public String name;
public String note;
public String pid;

}
7 changes: 7 additions & 0 deletions src/main/java/generated/LolChatFriendResource.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ public class LolChatFriendResource {

public String availability;
public Integer displayGroupId;
public String gameName;
public String gameTag;
public Integer groupId;
public Integer icon;
public Long id;
Expand All @@ -12,6 +14,11 @@ public class LolChatFriendResource {
public Object lol;
public String name;
public String note;
public String pid;
public String platformId;
public String product;
public String statusMessage;
public String summary;
public Long time;

}
7 changes: 7 additions & 0 deletions src/main/java/generated/LolChatIdBody.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package generated;

public class LolChatIdBody {

public String id;

}
14 changes: 8 additions & 6 deletions src/main/java/generated/LolChatLeagueQueueType.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ public enum LolChatLeagueQueueType {

@SerializedName("NONE")
NONE,
@SerializedName("SOLO5V5")
SOLO5V5,
@SerializedName("FLEXTT")
FLEXTT,
@SerializedName("FLEXSR")
FLEXSR
@SerializedName("RANKED_SOLO_5x5")
RANKED_SOLO_5X5,
@SerializedName("RANKED_FLEX_SR")
RANKED_FLEX_SR,
@SerializedName("RANKED_FLEX_TT")
RANKED_FLEX_TT,
@SerializedName("RANKED_TFT")
RANKED_TFT

}
Loading

0 comments on commit 74a76a3

Please sign in to comment.