Skip to content

Commit 4efb0da

Browse files
author
Damian Staszewski
committed
refactor(*): refactor all classes into ordinal Java classes
- Using Lombok - Using Jackson - Using OkHttpClient - Supporting Android 5.0 cause of OkHttpClient supports it - Any updates are be implemented in progress on Podio Forum
1 parent ca5518a commit 4efb0da

File tree

166 files changed

+4941
-2999
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

166 files changed

+4941
-2999
lines changed

.gitignore

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
1+
.gradle/
2+
build/
3+
logs/
4+
15
.idea
26
*.iml
37
out/
4-
.gradle
5-
build/
6-
logs/
8+
9+
lombok.config
10+
11+
*.txt
12+
13+
all/src/
14+
BOM/src/

README.md

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
11
[![Build Status](https://travis-ci.org/stachu540/HiRezAPI.svg)](https://travis-ci.org/stachu540/HiRezAPI)
22
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/ee16a92996a3425d87403780aa18f316)](https://www.codacy.com/app/stachu540/HiRezAPI?utm_source=github.com&utm_medium=referral&utm_content=stachu540/HiRezAPI&utm_campaign=Badge_Grade)
3-
[![Download](https://api.bintray.com/packages/stachu540/Java/HiRezAPI/images/download.svg) ](https://bintray.com/stachu540/Java/HiRezAPI/_latestVersion)
3+
[![Download](https://api.bintray.com/packages/stachu540/Java/HiRezAPI/images/download.svg)](https://bintray.com/stachu540/Java/HiRezAPI/_latestVersion)
4+
45
##### Javadocs
5-
| Package | Javadoc |
6-
|---|---|
7-
| Common | [![Javadocs](http://javadoc.io/badge/com.github.stachu540/HiRezApi-common.svg)](http://javadoc.io/doc/com.github.stachu540/HiRezApi-common) |
8-
| Smite | [![Javadocs](http://javadoc.io/badge/com.github.stachu540/HiRezApi-smite.svg)](http://javadoc.io/doc/com.github.stachu540/HiRezApi-smite) |
9-
| Paladins | [![Javadocs](http://javadoc.io/badge/com.github.stachu540/HiRezApi-paladins.svg)](http://javadoc.io/doc/com.github.stachu540/HiRezApi-paladins) |
10-
| Core | [![Javadocs](http://javadoc.io/badge/com.github.stachu540/HiRezApi-core.svg)](http://javadoc.io/doc/com.github.stachu540/HiRezApi-core) |
6+
Soon :tm:
117

128
# HiRezAPI
139
Java-Based API Wrapper for Hi-Rez Studios games. Currently supports:
@@ -16,7 +12,7 @@ Java-Based API Wrapper for Hi-Rez Studios games. Currently supports:
1612

1713
## Features
1814

19-
All features will be on [Project](https://github.com/stachu540/HiRezAPI/projects/4) tab
15+
All features will be on [Project](https://github.com/stachu540/HiRezAPI/projects/5) tab
2016

2117
## Getting Started
2218

all/build.gradle

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
def projectList = [
2+
project(":api"),
3+
project(":smite"),
4+
project(":paladins"),
5+
project(":realm")
6+
]
7+
8+
dependencies {
9+
projectList.each {
10+
compile it
11+
}
12+
}
13+
14+
sourceJar.enabled = false
15+
16+
javadoc {
17+
failOnError = false
18+
title = "${rootProject.name} ${rootProject.version} API"
19+
options {
20+
windowTitle = "${rootProject.name} ${rootProject.version}"
21+
author = true
22+
encoding = "UTF-8"
23+
quiet()
24+
}
25+
26+
projectList.each {
27+
source += it.javadoc.source
28+
classpath += it.javadoc.classpath
29+
excludes += it.javadoc.excludes
30+
includes += it.javadoc.includes
31+
}
32+
}

all/build.gradle.kts

Lines changed: 0 additions & 5 deletions
This file was deleted.

api/build.gradle

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
plugins {
2+
id "io.freefair.lombok"
3+
id "com.gorylenko.gradle-git-properties"
4+
}
5+
6+
dependencies {
7+
compile enforcedPlatform("com.fasterxml.jackson:jackson-bom:2.9.8")
8+
compile "com.fasterxml.jackson.core:jackson-annotations:2.9.8"
9+
10+
compile "com.fasterxml.jackson.core:jackson-databind"
11+
compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310"
12+
compile "com.fasterxml.jackson.datatype:jackson-datatype-jdk8"
13+
14+
compile "io.reactivex.rxjava2:rxjava:2.2.8"
15+
compile "io.reactivex.rxjava2:rxandroid:2.1.1"
16+
17+
compile "com.squareup.okhttp3:okhttp:3.14.0"
18+
compile "com.squareup.okhttp3:logging-interceptor:3.14.0"
19+
20+
testCompile "com.google.guava:guava:27.1-android"
21+
testCompile "com.squareup.okhttp3:mockwebserver:3.14.0"
22+
}
23+
24+
gitProperties {
25+
failOnNoGitDirectory = false
26+
keys = [
27+
"git.branch",
28+
"git.commit.id",
29+
"git.commit.id.abbrev",
30+
"git.commit.id.describe"
31+
]
32+
dateFormatTimeZone = "GMT"
33+
customProperty "application.name", rootProject.name
34+
customProperty "application.version", rootProject.version
35+
customProperty "application.url", "https://github.com/stachu540/hirezapi"
36+
customProperty "application.description", rootProject.description
37+
}

api/build.gradle.kts

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package hirez.api;
2+
3+
import hirez.api.object.Game;
4+
import hirez.api.object.Platform;
5+
6+
public interface BaseEndpoint {
7+
Game getGame();
8+
Platform getPlatform();
9+
String getBaseUrl();
10+
}
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
package hirez.api;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Getter;
6+
7+
import java.security.MessageDigest;
8+
import java.security.NoSuchAlgorithmException;
9+
import java.text.SimpleDateFormat;
10+
import java.time.ZoneOffset;
11+
import java.util.Date;
12+
import java.util.TimeZone;
13+
14+
@Getter
15+
@AllArgsConstructor
16+
public class Configuration {
17+
private final String devId;
18+
private final String authKey;
19+
private final BaseEndpoint baseEndpoint;
20+
private final SessionStorage sessionStorage;
21+
private final String userAgent;
22+
private final Language language;
23+
24+
public Configuration(ConfigurationBuilder cb) {
25+
this(cb.getDevId(), cb.getAuthKey(), cb.getBaseEndpoint(), cb.getSessionStorage(), cb.getUserAgent(), cb.getLanguage());
26+
}
27+
28+
public String createUrl(String method, String... args) {
29+
StringBuilder sb = new StringBuilder(baseEndpoint.getBaseUrl())
30+
.append("/").append(method).append("json");
31+
32+
String timestamp = doTimestamp();
33+
34+
if (!method.equals("ping")) {
35+
sb.append("/").append(devId);
36+
sb.append("/").append(doSignature(method, timestamp));
37+
if (!method.equals("createsession") && sessionStorage.isPresent()) {
38+
sb.append("/").append(sessionStorage.get());
39+
} else {
40+
throw new HiRezException("Require generate session for: " + method);
41+
}
42+
sb.append("/").append(timestamp);
43+
if (args.length > 0) {
44+
sb.append("/").append(String.join("/", args));
45+
}
46+
}
47+
return sb.toString();
48+
}
49+
50+
51+
private String doTimestamp() {
52+
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
53+
sdf.setTimeZone(TimeZone.getTimeZone(ZoneOffset.UTC));
54+
return sdf.format(new Date());
55+
}
56+
57+
private String doSignature(String method, String timestamp) {
58+
String templateSignature = new StringBuilder(devId)
59+
.append(method)
60+
.append(authKey)
61+
.append(timestamp)
62+
.toString();
63+
StringBuilder signatureBuilder = new StringBuilder();
64+
try {
65+
MessageDigest md = MessageDigest.getInstance("MD5");
66+
md.update(templateSignature.getBytes());
67+
byte[] bytes = md.digest();
68+
69+
for (byte bit : bytes) {
70+
String hex = Integer.toHexString(0xff & bit);
71+
if (hex.length() == 1) {
72+
signatureBuilder.append("0");
73+
}
74+
signatureBuilder.append(hex);
75+
}
76+
} catch (NoSuchAlgorithmException ignore) {
77+
}
78+
79+
return signatureBuilder.toString();
80+
}
81+
82+
public ConfigurationBuilder newBuilder() {
83+
return new ConfigurationBuilder(this);
84+
}
85+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package hirez.api;
2+
3+
import lombok.*;
4+
5+
import java.security.MessageDigest;
6+
import java.security.NoSuchAlgorithmException;
7+
import java.text.SimpleDateFormat;
8+
import java.time.ZoneOffset;
9+
import java.util.Date;
10+
import java.util.TimeZone;
11+
12+
@Getter
13+
@Setter
14+
@NoArgsConstructor
15+
public class ConfigurationBuilder {
16+
private String devId;
17+
private String authKey;
18+
private BaseEndpoint baseEndpoint;
19+
private SessionStorage sessionStorage = SessionStorage.DEFAULT;
20+
private String userAgent = RestClient.DEFAULT_USER_AGENT;
21+
private Language language = Language.English;
22+
23+
public ConfigurationBuilder(Configuration configuration) {
24+
this.devId = configuration.getDevId();
25+
this.authKey = configuration.getAuthKey();
26+
this.baseEndpoint = configuration.getBaseEndpoint();
27+
this.sessionStorage = configuration.getSessionStorage();
28+
this.userAgent = configuration.getUserAgent();
29+
this.language = configuration.getLanguage();
30+
}
31+
32+
public Configuration build() {
33+
return new Configuration(this);
34+
}
35+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package hirez.api;
2+
3+
public enum Division {
4+
Qualifying,
5+
Bronze_V,
6+
Bronze_IV,
7+
Bronze_III,
8+
Bronze_II,
9+
Bronze_I,
10+
Silver_V,
11+
Silver_IV,
12+
Silver_III,
13+
Silver_II,
14+
Silver_I,
15+
Gold_V,
16+
Gold_IV,
17+
Gold_III,
18+
Gold_II,
19+
Gold_I,
20+
Platinum_V,
21+
Platinum_IV,
22+
Platinum_III,
23+
Platinum_II,
24+
Platinum_I,
25+
Diamond_V,
26+
Diamond_IV,
27+
Diamond_III,
28+
Diamond_II,
29+
Diamond_I,
30+
Master,
31+
Grandmaster;
32+
33+
private final String value =
34+
name().replace('_', ' ');
35+
36+
@Override
37+
public String toString() {
38+
return value;
39+
}
40+
}

0 commit comments

Comments
 (0)