Skip to content
This repository was archived by the owner on Feb 9, 2022. It is now read-only.

Commit 0fa9442

Browse files
author
Explv
committed
Download resources from GitHub if they do not exist locally. This is to work around an OSBot issue where files cannot be loaaded from the local .jara
1 parent d79cfd5 commit 0fa9442

File tree

3 files changed

+42
-16
lines changed

3 files changed

+42
-16
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>org.explv.explv_osbot_manager</groupId>
88
<artifactId>explvs_aio</artifactId>
9-
<version>v3.1.8</version>
9+
<version>v3.1.9</version>
1010
<repositories>
1111
<repository>
1212
<id>local-repo</id>

src/main/java/script/AIO.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
@ScriptManifest(author = "Explv", name = "Explv's AIO " + AIO.VERSION, info = "AIO", version = 0, logo = "http://i.imgur.com/58Zz0fb.png")
2929
public class AIO extends Script {
3030

31-
static final String VERSION = "v3.1.8";
31+
static final String VERSION = "v3.1.9";
3232

3333
private Gui gui;
3434
private Paint paint;

src/main/java/util/file_managers/ResourceManager.java

Lines changed: 40 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
package util.file_managers;
22

3-
import java.io.File;
4-
import java.io.FileInputStream;
5-
import java.io.IOException;
6-
import java.io.InputStream;
3+
import java.io.*;
4+
import java.net.MalformedURLException;
5+
import java.net.URL;
6+
import java.net.URLConnection;
7+
import java.nio.channels.Channels;
8+
import java.nio.channels.FileChannel;
9+
import java.nio.channels.ReadableByteChannel;
710
import java.nio.file.Files;
811
import java.nio.file.Path;
912
import java.nio.file.Paths;
@@ -19,20 +22,29 @@ public class ResourceManager {
1922
"resources"
2023
).toString();
2124

25+
private static final String GITHUB_URL = "https://github.com/Explv/Explvs-AIO";
26+
2227
public static InputStream loadFile(final String relativeFilePath) {
2328
if (fileExistsInDataDir(relativeFilePath)) {
2429
return loadFileFromDataDir(relativeFilePath);
2530
}
2631

27-
InputStream jarInputStream = loadFileFromJar(relativeFilePath);
28-
29-
if (jarInputStream != null) {
30-
saveFileToDataDirectory(jarInputStream, relativeFilePath);
31-
return loadFileFromDataDir(relativeFilePath);
32-
}
33-
34-
System.out.println("Failed to load file");
35-
return null;
32+
// TODO: Loading files from local .jars currently seems to be broken
33+
// As a stop-gap, we download the files from GitHub if they don't exist locally
34+
// or are empty.
35+
saveFileFromGitHubToDataDirectory(relativeFilePath);
36+
return loadFileFromDataDir(relativeFilePath);
37+
38+
//
39+
// InputStream jarInputStream = loadFileFromJar(relativeFilePath);
40+
//
41+
// if (jarInputStream != null) {
42+
// saveFileToDataDirectory(jarInputStream, relativeFilePath);
43+
// return loadFileFromDataDir(relativeFilePath);
44+
// }
45+
//
46+
// System.out.println("Failed to load file");
47+
// return null;
3648
}
3749

3850
private static InputStream loadFileFromJar(final String relativeFilePath) {
@@ -42,7 +54,7 @@ private static InputStream loadFileFromJar(final String relativeFilePath) {
4254

4355
private static boolean fileExistsInDataDir(final String relativeFilePath) {
4456
File file = Paths.get(DIRECTORY, relativeFilePath).toFile();
45-
return file.exists();
57+
return file.exists() && file.length() > 0;
4658
}
4759

4860
private static InputStream loadFileFromDataDir(final String relativeFilePath) {
@@ -66,6 +78,20 @@ private static InputStream loadFileFromDataDir(final String relativeFilePath) {
6678
return null;
6779
}
6880

81+
private static void saveFileFromGitHubToDataDirectory(final String relativeFilePath) {
82+
try {
83+
URL url = new URL(GITHUB_URL + "/blob/master/src/main/resources/" + relativeFilePath + "?raw=true");
84+
System.out.println("Saving file from url: " + url.toString());
85+
86+
ReadableByteChannel readableByteChannel = Channels.newChannel(url.openStream());
87+
88+
FileOutputStream fileOutputStream = new FileOutputStream(Paths.get(DIRECTORY, relativeFilePath).toFile());
89+
fileOutputStream.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
90+
} catch (IOException e) {
91+
e.printStackTrace();
92+
}
93+
}
94+
6995
private static synchronized boolean saveFileToDataDirectory(final InputStream inputStream, final String relativeFilePath) {
7096
if (inputStream == null) {
7197
return false;

0 commit comments

Comments
 (0)