UploadInfo.java
com.mojang.realmsclient.dto.UploadInfo
信息
- 全限定名:com.mojang.realmsclient.dto.UploadInfo
- 类型:public record
- 包:com.mojang.realmsclient.dto
- 源码路径:src/main/java/com/mojang/realmsclient/dto/UploadInfo.java
- 起始行号:L18
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
DEFAULT_SCHEMA- 类型:
String - 修饰符:
private static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
DEFAULT_PORT- 类型:
int - 修饰符:
private static final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
URI_SCHEMA_PATTERN- 类型:
Pattern - 修饰符:
private static final - 源码定位:
L22 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public static UploadInfo parse(String json) @ L24
- 方法名:parse
- 源码定位:L24
- 返回类型:UploadInfo
- 修饰符:public static
参数:
- json: String
说明:
TODO
public static URI assembleUri(String endpoint, int portOverride) @ L44
- 方法名:assembleUri
- 源码定位:L44
- 返回类型:URI
- 修饰符:public static
参数:
- endpoint: String
- portOverride: int
说明:
TODO
private static int selectPortOrDefault(int portOverride, int parsedPort) @ L61
- 方法名:selectPortOrDefault
- 源码定位:L61
- 返回类型:int
- 修饰符:private static
参数:
- portOverride: int
- parsedPort: int
说明:
TODO
private static String ensureEndpointSchema(String endpoint, Matcher matcher) @ L69
- 方法名:ensureEndpointSchema
- 源码定位:L69
- 返回类型:String
- 修饰符:private static
参数:
- endpoint: String
- matcher: Matcher
说明:
TODO
public static String createRequest(String uploadToken) @ L73
- 方法名:createRequest
- 源码定位:L73
- 返回类型:String
- 修饰符:public static
参数:
- uploadToken: String
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public record UploadInfo(boolean worldClosed, @Nullable String token, URI uploadEndpoint) {
private static final Logger LOGGER = LogUtils.getLogger();
private static final String DEFAULT_SCHEMA = "http://";
private static final int DEFAULT_PORT = 8080;
private static final Pattern URI_SCHEMA_PATTERN = Pattern.compile("^[a-zA-Z][-a-zA-Z0-9+.]+:");
public static @Nullable UploadInfo parse(String json) {
try {
JsonObject jsonObject = LenientJsonParser.parse(json).getAsJsonObject();
String endpointStr = JsonUtils.getStringOr("uploadEndpoint", jsonObject, null);
if (endpointStr != null) {
int endpointPort = JsonUtils.getIntOr("port", jsonObject, -1);
URI uploadEndpoint = assembleUri(endpointStr, endpointPort);
if (uploadEndpoint != null) {
boolean worldClosed = JsonUtils.getBooleanOr("worldClosed", jsonObject, false);
String token = JsonUtils.getStringOr("token", jsonObject, null);
return new UploadInfo(worldClosed, token, uploadEndpoint);
}
}
} catch (Exception var7) {
LOGGER.error("Could not parse UploadInfo", (Throwable)var7);
}
return null;
}
@VisibleForTesting
public static @Nullable URI assembleUri(String endpoint, int portOverride) {
Matcher matcher = URI_SCHEMA_PATTERN.matcher(endpoint);
String endpointWithSchema = ensureEndpointSchema(endpoint, matcher);
try {
URI result = new URI(endpointWithSchema);
int selectedPort = selectPortOrDefault(portOverride, result.getPort());
return selectedPort != result.getPort()
? new URI(result.getScheme(), result.getUserInfo(), result.getHost(), selectedPort, result.getPath(), result.getQuery(), result.getFragment())
: result;
} catch (URISyntaxException var6) {
LOGGER.warn("Failed to parse URI {}", endpointWithSchema, var6);
return null;
}
}
private static int selectPortOrDefault(int portOverride, int parsedPort) {
if (portOverride != -1) {
return portOverride;
} else {
return parsedPort != -1 ? parsedPort : 8080;
}
}
private static String ensureEndpointSchema(String endpoint, Matcher matcher) {
return matcher.find() ? endpoint : "http://" + endpoint;
}
public static String createRequest(@Nullable String uploadToken) {
JsonObject request = new JsonObject();
if (uploadToken != null) {
request.addProperty("token", uploadToken);
}
return request.toString();
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
JsonUtils.getBooleanOr(), JsonUtils.getIntOr(), JsonUtils.getStringOr()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
LenientJsonParser.parse()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Pattern.compile()
- 引用位置: