Migrate to new HTTP client

This commit is contained in:
games647
2024-05-21 15:09:45 +02:00
parent 6005f0db44
commit d04e421927
3 changed files with 26 additions and 33 deletions

View File

@ -1,3 +1,27 @@
# 2.0
## Major changes
* Bumped minimum Java version to 11 make use of modern Java performance features
* Report back if really still need the old versions
* Then we could make use of versioned code, but that requires more coding effort
## Added
* Support for HTTP/2 for contacting Mojang
## Changed
* Updated many dependencies
## Removed
* Dropped Java support < 11
* Removed configuration option to add multiple outgoing IPv4 towards Mojang
* Was this really used?
[...] A lot of changes
### 1.11
* TODO: Replace reflection with methodhandles

View File

@ -203,7 +203,7 @@
<dependency>
<groupId>com.github.games647</groupId>
<artifactId>craftapi</artifactId>
<version>0.8.1</version>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- Database driver included in Spigot -->

View File

@ -29,8 +29,6 @@ import com.github.games647.craftapi.model.auth.Verification;
import com.github.games647.craftapi.resolver.MojangResolver;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.util.Optional;
@ -44,38 +42,9 @@ import java.util.Optional;
*/
public class ProxyAgnosticMojangResolver extends MojangResolver {
private static final String HOST = "sessionserver.mojang.com";
/**
* A formatting string containing a URL used to call the {@code hasJoined} method on mojang session servers.
* <p>
* Formatting parameters:
* 1. The username of the player in question
* 2. The serverId of this server
*/
public static final String ENDPOINT = "https://" + HOST + "/session/minecraft/hasJoined?username=%s&serverId=%s";
@Override
public Optional<Verification> hasJoined(String username, String serverHash, InetAddress hostIp)
throws IOException {
String url = String.format(ENDPOINT, username, serverHash);
HttpURLConnection conn = this.getConnection(url);
int responseCode = conn.getResponseCode();
Verification verification = null;
// Mojang session servers send HTTP 204 (NO CONTENT) when the authentication seems invalid
// If that's not our case, the authentication is valid, and so we can parse the response.
if (responseCode != HttpURLConnection.HTTP_NO_CONTENT) {
verification = this.parseRequest(conn, this::parseVerification);
}
return Optional.ofNullable(verification);
}
// Functional implementation of InputStreamAction, used in hasJoined method in parseRequest call
protected Verification parseVerification(InputStream input) throws IOException {
return this.readJson(input, Verification.class);
return super.hasJoined(username, serverHash, null);
}
}