1
mirror of https://github.com/CarmJos/GithubReleases4J.git synced 2024-09-19 21:55:45 +00:00

[v1.2.1] [U] 修改接口使用方式,使其更加易懂。

This commit is contained in:
Carm Jos 2022-01-22 13:47:48 +08:00
parent 303dd703d6
commit 91d3dab986
5 changed files with 38 additions and 50 deletions

View File

@ -14,7 +14,7 @@
<groupId>cc.carm.lib</groupId>
<artifactId>githubreleases4j</artifactId>
<version>1.2.0</version>
<version>1.2.1</version>
<name>GithubReleases4J</name>
<description>Github Releases for Java</description>

View File

@ -21,57 +21,44 @@ public class GitHubHttpUtils {
// Should not be the instance or use by other codes.
}
protected static JSONObject getObject(@NotNull String urlString, @Nullable String token) throws IOException {
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent", "GithubReleases4J");
if (token != null) {
conn.setRequestProperty("Authorization", "token " + token);
}
conn.setRequestProperty("Accept", "application/vnd.github.v3+json");
conn.connect();
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
String responseBody = reader.lines().collect(Collectors.joining(System.lineSeparator()));
reader.close();
return new JSONObject(responseBody);
}
protected static JSONArray getArray(@NotNull String urlString, String token) throws IOException {
URL url = new URL(urlString);
private static URLConnection createConnection(@NotNull String httpURL, @Nullable String token) throws IOException {
URL url = new URL(httpURL);
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent", "GithubReleases4J");
if (token != null) {
conn.setRequestProperty("Authorization", "token " + token);
}
conn.setRequestProperty("Accept", "application/vnd.github.v3+json");
conn.connect();
InputStream in = conn.getInputStream();
if (token != null) conn.setRequestProperty("Authorization", "token " + token);
BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
String responseBody = reader.lines().collect(Collectors.joining(System.lineSeparator()));
reader.close();
return new JSONArray(responseBody);
return conn;
}
protected static File download(@NotNull String urlString, @Nullable String token,
private static String getResponse(@NotNull String httpURL, @Nullable String token) throws IOException {
URLConnection connection = createConnection(httpURL, token);
InputStream in = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in, StandardCharsets.UTF_8));
String response = reader.lines().collect(Collectors.joining(System.lineSeparator()));
reader.close();
return response;
}
protected static JSONObject getObject(@NotNull String httpURL, @Nullable String token) throws IOException {
return new JSONObject(getResponse(httpURL, token));
}
protected static JSONArray getArray(@NotNull String httpURL, String token) throws IOException {
return new JSONArray(getResponse(httpURL, token));
}
protected static File download(@NotNull String httpURL, @Nullable String token,
@NotNull String path, CopyOption... copyOptions) throws IOException {
URL url = new URL(urlString);
Path target = Paths.get(path);
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent", "GithubReleases4J");
if (token != null) {
conn.setRequestProperty("Authorization", "token " + token);
}
conn.setRequestProperty("Accept", "application/vnd.github.v3+json");
InputStream in = conn.getInputStream();
URLConnection connection = createConnection(httpURL, token);
InputStream in = connection.getInputStream();
Files.copy(in, target, copyOptions);
in.close();

View File

@ -84,23 +84,23 @@ public class GithubAsset {
/**
* Download this asset to current path with original name.
*
* @param options Copy options e.g. {@link java.nio.file.StandardCopyOption}
* @return Downloaded file.
* @throws IOException Throws when has any io exception
*/
public File download() throws IOException {
return download(null);
public File download(@NotNull CopyOption... options) throws IOException {
return GitHubHttpUtils.download(getBrowserDownloadURL(), getSource().getAuthToken(), getName(), options);
}
/**
* Download this asset with provided path and name.
*
* @param path target path, e.g. "cache/build.zip"
* @param options Copy options
* @param path target path with file suffix , e.g. "cache/build.zip"
* @param options Copy options e.g. {@link java.nio.file.StandardCopyOption}
* @return Downloaded file.
* @throws IOException Throws when has any io exception
*/
public File download(@Nullable String path, CopyOption... options) throws IOException {
path = path == null ? getName() : path;
public File download(@NotNull String path, @NotNull CopyOption... options) throws IOException {
return GitHubHttpUtils.download(getBrowserDownloadURL(), getSource().getAuthToken(), path, options);
}

View File

@ -135,7 +135,7 @@ public class GithubRelease {
*
* @return The author user {@link GithubUser}
*/
public GithubUser getAuthor() {
public @Nullable GithubUser getAuthor() {
return Optional.ofNullable(getContents().getJSONObject("author"))
.map(GithubUser::of)
.orElse(null);
@ -146,7 +146,7 @@ public class GithubRelease {
*
* @return {@link GithubAsset}
*/
public List<GithubAsset> getAssets() {
public @NotNull List<GithubAsset> getAssets() {
JSONArray assetsArray = getContents().getJSONArray("assets");
if (assetsArray == null) return new ArrayList<>();
return IntStream.range(0, assetsArray.length())

View File

@ -6,6 +6,7 @@ import org.junit.Test;
import java.io.File;
import java.io.IOException;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.util.List;
@ -48,7 +49,7 @@ public class GithubReleasesTest {
if (!DOWNLOAD) return;
if (assets == null) return;
try {
File file = assets.download(null);
File file = assets.download();
System.out.println("- at " + file.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();