Skip to content

Commit a6e3a19

Browse files
committed
Add org.json and continued on new Hash system
Add org.json dependency and replace HttpURLConnection with Java 11 HttpClient for manifest download. Add IMPRFolder and lavaNativesFolder config entries and use IamMusicPlayer config to build native paths. Fix log message typo and simplify equality checks
1 parent 663eac6 commit a6e3a19

File tree

3 files changed

+41
-30
lines changed

3 files changed

+41
-30
lines changed

common/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ dependencies {
2626

2727
implementation "com.github.sealedtx:java-youtube-downloader:${rootProject.ytdownloader}"
2828
implementation 'com.mpatric:mp3agic:0.9.1'
29+
implementation("org.json:json:20250517")
2930
}
3031
/*
3132
publishing {

common/src/main/java/dev/felnull/imp/IMPConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package dev.felnull.imp;
22

3+
import java.nio.file.Path;
4+
import java.nio.file.Paths;
35
import me.shedaniel.autoconfig.ConfigData;
46
import me.shedaniel.autoconfig.annotation.Config;
57
import me.shedaniel.autoconfig.annotation.ConfigEntry;
@@ -31,6 +33,12 @@ public class IMPConfig implements ConfigData {
3133
public String lavaPlayerNativesURL =
3234
"https://raw.githubusercontent.com/Mod-Sauce/test_lavaplayer_IMP/refs/heads/main/lavaplayer/natives_link.json";
3335

36+
@ConfigEntry.Category("client")
37+
public String IMPRFolder = "iammusicplayerrenewed";
38+
39+
@ConfigEntry.Category("client")
40+
public String lavaNativesFolder = "lavaplayer_natives";
41+
3442
@ConfigEntry.Category("client")
3543
public boolean hideDisplaySprite = false;
3644

common/src/main/java/dev/felnull/imp/client/lava/hash/IMPRHash.java

Lines changed: 32 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,25 @@
22

33
import dev.felnull.fnjl.os.OSs;
44
import dev.felnull.fnjl.os.OSs.Type;
5+
import dev.felnull.imp.IMPConfig;
6+
import dev.felnull.imp.IamMusicPlayer;
57
import dev.felnull.imp.client.lava.LavaNativeManager;
68
import java.io.*;
7-
import java.net.HttpURLConnection;
89
import java.net.URI;
10+
import java.net.http.HttpClient;
11+
import java.net.http.HttpRequest;
12+
import java.net.http.HttpResponse;
13+
import java.nio.file.Path;
14+
import java.nio.file.Paths;
15+
import java.util.Objects;
916
import java.util.Optional;
1017
import org.apache.logging.log4j.LogManager;
1118
import org.apache.logging.log4j.Logger;
19+
import org.jetbrains.annotations.NotNull;
20+
import org.json.*;
1221

1322
public class IMPRHash {
1423

15-
private static final int READ_TIMEOUT = 30000; // 30 seconds
16-
private static final int CONNECTION_TIMEOUT = 10000; // 10 seconds
17-
1824
private static final Logger LOGGER = LogManager.getLogger(IMPRHash.class);
1925

2026
public boolean FileIsValid() {
@@ -29,19 +35,21 @@ public boolean FileIsValid() {
2935
if (os == Type.MAC) {
3036
return Mac(os, arch);
3137
} else {
32-
LOGGER.error("Your os is {}, with is unsuported", os);
38+
LOGGER.error("Your os is {}, with is unsupported", os);
3339
return false;
3440
}
3541
}
3642

37-
private boolean Linux(Type os, String arch) {
43+
private boolean Linux(@NotNull Type os, String arch) {
3844
String hash = HashUnix(os.toString(), Optional.of(arch));
45+
Path file_path = Paths.get(
46+
IamMusicPlayer.getConfig().IMPRFolder,
47+
IamMusicPlayer.getConfig().lavaNativesFolder,
48+
os.toString(),
49+
arch
50+
);
3951
String file_hash = ""; // TODO!
40-
if (hash == file_hash) {
41-
return true;
42-
} else {
43-
return false;
44-
}
52+
return Objects.equals(hash, file_hash);
4553
}
4654

4755
private boolean Mac(Type os, String arch) {
@@ -85,26 +93,20 @@ private String HashUnix(String os, Optional<String> arch) {
8593
}
8694

8795
private String GetHash(String url) throws Exception {
88-
HttpURLConnection connection = (HttpURLConnection) new URI(url)
89-
.toURL()
90-
.openConnection();
91-
connection.setConnectTimeout(CONNECTION_TIMEOUT);
92-
connection.setReadTimeout(READ_TIMEOUT);
93-
connection.setRequestProperty("User-Agent", "IamMusicPlayer");
94-
95-
int responseCode = connection.getResponseCode();
96-
if (responseCode != 200) {
97-
throw new IOException(
98-
"Failed to download manifest. HTTP response code: " + responseCode
96+
try {
97+
HttpClient client = HttpClient.newHttpClient();
98+
HttpRequest request = HttpRequest.newBuilder()
99+
.uri(URI.create(url))
100+
.GET()
101+
.build();
102+
HttpResponse<String> response = client.send(
103+
request,
104+
HttpResponse.BodyHandlers.ofString()
99105
);
100-
}
101-
102-
try (
103-
BufferedReader reader = new BufferedReader(
104-
new InputStreamReader(connection.getInputStream())
105-
)
106-
) {
107-
return String.valueOf(reader);
106+
return response.body();
107+
} catch (Exception e) {
108+
LOGGER.fatal("Something Failed during hash download: " + e);
109+
return null;
108110
}
109111
}
110112
}

0 commit comments

Comments
 (0)