Skip to content

Commit 8515d0e

Browse files
Merge pull request #44 from TeamKun/develop
wip: chore: リリース v2.2.3
2 parents 72c882e + 8d68ff0 commit 8515d0e

File tree

4 files changed

+43
-9
lines changed

4 files changed

+43
-9
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>net.kunmc.lab</groupId>
88
<artifactId>TeamKunPluginManager</artifactId>
9-
<version>2.2.2</version>
9+
<version>2.2.3</version>
1010
<packaging>jar</packaging>
1111

1212
<name>TeamKunPluginManager</name>

src/main/java/net/kunmc/lab/teamkunpluginmanager/utils/URLUtils.java

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
package net.kunmc.lab.teamkunpluginmanager.utils;
22

33
import net.kunmc.lab.teamkunpluginmanager.TeamKunPluginManager;
4-
import org.apache.commons.io.FileUtils;
54
import org.apache.commons.io.IOUtils;
65

76
import java.io.File;
7+
import java.io.FileOutputStream;
8+
import java.io.IOException;
9+
import java.io.InputStream;
10+
import java.io.OutputStream;
811
import java.net.HttpURLConnection;
912
import java.net.URL;
1013
import java.nio.charset.StandardCharsets;
14+
import java.nio.file.NoSuchFileException;
1115

1216
public class URLUtils
1317
{
@@ -76,13 +80,20 @@ public static Pair<Boolean, String> downloadFile(String url, String fileName)
7680
duplicateFile = true;
7781
}
7882

83+
tryna = 0;
84+
85+
final int redirectLimit = TeamKunPluginManager.config.getInt("redirectLimit", 15);
86+
7987
try
8088
{
8189
URL urlObj = new URL(url);
8290
HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
83-
boolean redir = false;
91+
boolean redir;
8492
do
8593
{
94+
if (tryna++ > redirectLimit)
95+
throw new IOException("Too many redirects.");
96+
8697
connection.setRequestMethod("GET");
8798
connection.setInstanceFollowRedirects(false);
8899
if (urlObj.getHost().equals("api.github.com"))
@@ -109,7 +120,25 @@ public static Pair<Boolean, String> downloadFile(String url, String fileName)
109120
}
110121
while(redir);
111122

112-
FileUtils.copyInputStreamToFile(connection.getInputStream(), new File("plugins/" + fileName));
123+
connection.setRequestMethod("GET");
124+
connection.setInstanceFollowRedirects(false);
125+
if (urlObj.getHost().equals("api.github.com"))
126+
connection.setRequestProperty("Authorization", "token " + TeamKunPluginManager.vault.getToken());
127+
connection.setRequestProperty("User-Agent", "Mozilla/8.10; Safari/Chrome/Opera/Edge/KungleBot-Peyang; Mobile-Desktop");
128+
129+
File file = new File("plugins/" + fileName);
130+
131+
if (!file.createNewFile())
132+
throw new NoSuchFileException("ファイルの作成に失敗しました。");
133+
134+
try(InputStream is = connection.getInputStream();
135+
OutputStream os = new FileOutputStream(file))
136+
{
137+
IOUtils.copy(is, os);
138+
}
139+
140+
141+
//FileUtils.copyInputStreamToFile(connection.getInputStream(), file);
113142
return new Pair<>(duplicateFile, fileName);
114143
}
115144
catch (Exception e)

src/main/java/net/kunmc/lab/teamkunpluginmanager/utils/rdmarker/DevBukkit.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
public class DevBukkit
1616
{
1717

18-
private static final Pattern PATTERN = Pattern.compile("^/projects/(?<slug>\\w+)(/?$|/files(/(?<id>\\d+)((/files/(?<version>\\d+))?/download)?)?)/?$");
18+
private static final String basePatterns = "^/projects/(?<slug>\\w+)(/(files|/screenshots|relations/(dependencies|dependents)|)/?$)?(/?$|/files(/(?<id>\\d+)((/files/(?<version>\\d+))?/download)?)?)/?$";
19+
private static final Pattern BUKKIT_PATTERN = Pattern.compile("^/projects/" + basePatterns);
20+
private static final Pattern CURSE_PATTERN = Pattern.compile("^/minecraft/bukkit-plugins/" + basePatterns);
1921

2022
public static boolean isMatch(String urlName)
2123
{
@@ -29,10 +31,12 @@ public static boolean isMatch(String urlName)
2931
return false;
3032
}
3133

32-
if (!url.getHost().equals("dev.bukkit.org"))
34+
boolean isBukkit;
35+
36+
if (!(isBukkit = url.getHost().equals("dev.bukkit.org")) && !url.getHost().equals("curseforge.com"))
3337
return false;
3438

35-
Matcher matcher = PATTERN.matcher(url.getPath());
39+
Matcher matcher = (isBukkit ? BUKKIT_PATTERN: CURSE_PATTERN).matcher(url.getPath());
3640

3741
while(matcher.find())
3842
if (matcher.group("slug") != null && !matcher.group("slug").equals(""))
@@ -55,7 +59,7 @@ public static String toDownloadUrl(String urlName)
5559
if (!url.getHost().equals("dev.bukkit.org"))
5660
return urlName;
5761

58-
Matcher matcher = PATTERN.matcher(url.getPath());
62+
Matcher matcher = BUKKIT_PATTERN.matcher(url.getPath());
5963

6064
String slug = null;
6165
String version = null;

src/main/resources/config.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ gitHubName: [TeamKUN]
33

44
#DBへのパス
55
dependPath: "/depend.db"
6-
76
#名前解決へのパス
87
resolvePath: "/resolve.db"
98

9+
redirectLimit: 15
10+
1011
# エイリアス定義ファイル
1112
# 形式: JSON
1213
# 書き方: { "ExamplePlugin": "https://example.com/download/ExamplePlugin.jar"

0 commit comments

Comments
 (0)