From b8c1bca9003f6b94edd8a84f0f0c42f16c74ee86 Mon Sep 17 00:00:00 2001 From: q Date: Fri, 17 Oct 2025 15:51:41 +0800 Subject: [PATCH] =?UTF-8?q?parser=20v10.1.17=E5=8F=91=E5=B8=83=E5=88=B0mav?= =?UTF-8?q?en=20central=20=E5=85=81=E8=AE=B8=E5=BC=80=E5=8F=91=E8=80=85?= =?UTF-8?q?=E4=BE=9D=E8=B5=96=201.=20=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E8=A7=A3=E6=9E=90=E5=99=A8=E6=89=A9=E5=B1=95=E5=92=8C?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=A4=BA=E4=BE=8B=202.=20=E4=BC=98=E5=8C=96p?= =?UTF-8?q?om=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- parser/src/test/java/cn/qaiu/parser/Demo.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 parser/src/test/java/cn/qaiu/parser/Demo.java diff --git a/parser/src/test/java/cn/qaiu/parser/Demo.java b/parser/src/test/java/cn/qaiu/parser/Demo.java new file mode 100644 index 0000000..b583d22 --- /dev/null +++ b/parser/src/test/java/cn/qaiu/parser/Demo.java @@ -0,0 +1,92 @@ +package cn.qaiu.parser; + +import cn.qaiu.entity.ShareLinkInfo; +import io.vertx.core.Future; +import io.vertx.core.Promise; + +public class Demo { + + public static void main(String[] args) { + // 1. 注册自定义解析器 + registerParser(); + + // 2. 使用自定义解析器 + useParser(); + + // 3. 查询注册状态 + checkRegistry(); + + // 4. 注销解析器(可选) + // CustomParserRegistry.unregister("mypan"); + } + + private static void registerParser() { + CustomParserConfig config = CustomParserConfig.builder() + .type("mypan") + .displayName("我的网盘") + .toolClass(MyCustomPanTool.class) + .standardUrlTemplate("https://mypan.com/s/{shareKey}") + .panDomain("https://mypan.com") + .build(); + + try { + CustomParserRegistry.register(config); + System.out.println("✓ 解析器注册成功"); + } catch (IllegalArgumentException e) { + System.err.println("✗ 注册失败: " + e.getMessage()); + } + } + + private static void useParser() { + try { + ParserCreate parser = ParserCreate.fromType("mypan") + .shareKey("abc123") + .setShareLinkInfoPwd("1234"); + + // 检查是否为自定义解析器 + if (parser.isCustomParser()) { + System.out.println("✓ 这是一个自定义解析器"); + System.out.println(" 配置: " + parser.getCustomParserConfig()); + } + + // 创建工具并解析 + IPanTool tool = parser.createTool(); + String url = tool.parseSync(); + System.out.println("✓ 下载链接: " + url); + + } catch (Exception e) { + System.err.println("✗ 解析失败: " + e.getMessage()); + } + } + + private static void checkRegistry() { + System.out.println("\n已注册的自定义解析器:"); + System.out.println(" 数量: " + CustomParserRegistry.size()); + + if (CustomParserRegistry.contains("mypan")) { + CustomParserConfig config = CustomParserRegistry.get("mypan"); + System.out.println(" - " + config.getType() + ": " + config.getDisplayName()); + } + } + + // 自定义解析器实现 + static class MyCustomPanTool implements IPanTool { + private final ShareLinkInfo shareLinkInfo; + + public MyCustomPanTool(ShareLinkInfo shareLinkInfo) { + this.shareLinkInfo = shareLinkInfo; + } + + @Override + public Future parse() { + Promise promise = Promise.promise(); + + // 模拟解析逻辑 + String shareKey = shareLinkInfo.getShareKey(); + String downloadUrl = "https://mypan.com/download/" + shareKey; + + promise.complete(downloadUrl); + return promise.future(); + } + } +}