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

    • 引用位置: 方法调用
    • 关联成员: JsonUtils.getBooleanOr(), JsonUtils.getIntOr(), JsonUtils.getStringOr()
  • LenientJsonParser

    • 引用位置: 方法调用
    • 关联成员: LenientJsonParser.parse()
  • TropicalFish

    • 引用位置: 字段/方法调用
    • 关联成员: Pattern.compile()