Add version query when checking for update

This commit is contained in:
yushijinhun
2018-07-31 19:46:22 +08:00
parent 4f52bb2ffe
commit 3b42ba9375
2 changed files with 28 additions and 1 deletions

View File

@@ -17,11 +17,14 @@
*/ */
package org.jackhuang.hmcl.upgrade; package org.jackhuang.hmcl.upgrade;
import static org.jackhuang.hmcl.util.Lang.mapOf;
import static org.jackhuang.hmcl.util.Pair.pair;
import static org.jackhuang.hmcl.util.VersionNumber.asVersion; import static org.jackhuang.hmcl.util.VersionNumber.asVersion;
import java.io.IOException; import java.io.IOException;
import org.jackhuang.hmcl.Metadata; import org.jackhuang.hmcl.Metadata;
import org.jackhuang.hmcl.util.NetworkUtils;
import javafx.application.Platform; import javafx.application.Platform;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
@@ -37,7 +40,8 @@ public final class UpdateChecker {
private UpdateChecker() {} private UpdateChecker() {}
private static ObjectProperty<RemoteVersion> latestVersion = new SimpleObjectProperty<>(); private static ObjectProperty<RemoteVersion> latestVersion = new SimpleObjectProperty<>();
private static StringProperty updateSource = new SimpleStringProperty(Metadata.UPDATE_SERVER_URL + "/api/update_link"); private static StringProperty updateSource = new SimpleStringProperty(
NetworkUtils.withQuery(Metadata.UPDATE_SERVER_URL + "/api/update_link", mapOf(pair("version", Metadata.VERSION))));
private static BooleanBinding outdated = Bindings.createBooleanBinding( private static BooleanBinding outdated = Bindings.createBooleanBinding(
() -> { () -> {
RemoteVersion latest = latestVersion.get(); RemoteVersion latest = latestVersion.get();

View File

@@ -20,9 +20,11 @@ package org.jackhuang.hmcl.util;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.UncheckedIOException;
import java.net.*; import java.net.*;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects; import java.util.Objects;
import java.util.function.Supplier; import java.util.function.Supplier;
@@ -48,6 +50,27 @@ public final class NetworkUtils {
NetworkUtils.userAgentSupplier = Objects.requireNonNull(userAgentSupplier); NetworkUtils.userAgentSupplier = Objects.requireNonNull(userAgentSupplier);
} }
public static String withQuery(String baseUrl, Map<String, String> params) {
try {
StringBuilder sb = new StringBuilder(baseUrl);
boolean first = true;
for (Entry<String, String> param : params.entrySet()) {
if (first) {
sb.append('?');
first = false;
} else {
sb.append('&');
}
sb.append(URLEncoder.encode(param.getKey(), "UTF-8"));
sb.append('=');
sb.append(URLEncoder.encode(param.getValue(), "UTF-8"));
}
return sb.toString();
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
public static HttpURLConnection createConnection(URL url) throws IOException { public static HttpURLConnection createConnection(URL url) throws IOException {
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true); connection.setDoInput(true);