From 1c94f4ef8b2a0e1200853f8acc301fc92ee5f7cd Mon Sep 17 00:00:00 2001 From: QAIU <736226400@qq.com> Date: Fri, 11 Aug 2023 15:28:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A5=B6=E7=89=9B=E5=BF=AB=E4=BC=A0=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E4=B8=8B=E8=BD=BDzip=E7=9B=AE=E5=BD=95=E5=88=86?= =?UTF-8?q?=E4=BA=AB#11,=20core=E6=A1=86=E6=9E=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/handlerfactory/RouterHandlerFactory.java | 4 ++++ .../java/cn/qaiu/vx/core/util/ConfigConstant.java | 3 ++- .../java/cn/qaiu/vx/core/util/SharedDataUtil.java | 4 ++-- .../java/cn/qaiu/lz/common/parser/IPanTool.java | 4 ++-- .../cn/qaiu/lz/common/parser/impl/CowTool.java | 14 ++++++++++++-- .../java/cn/qaiu/lz/common/parser/impl/LzTool.java | 2 ++ .../java/cn/qaiu/lz/common/util/CommonUtils.java | 10 +++++++--- .../main/java/cn/qaiu/lz/web/http/ServerApi.java | 2 +- .../qaiu/lz/web/service/impl/UserServiceImpl.java | 7 +++++++ web-service/src/main/resources/app-dev.yml | 2 ++ .../src/main/resources/http-tools/pan-cow.http | 13 ++++++------- .../src/main/resources/http-tools/test.http | 6 +++++- 12 files changed, 52 insertions(+), 19 deletions(-) diff --git a/core/src/main/java/cn/qaiu/vx/core/handlerfactory/RouterHandlerFactory.java b/core/src/main/java/cn/qaiu/vx/core/handlerfactory/RouterHandlerFactory.java index 49ded5a..27e1cbc 100644 --- a/core/src/main/java/cn/qaiu/vx/core/handlerfactory/RouterHandlerFactory.java +++ b/core/src/main/java/cn/qaiu/vx/core/handlerfactory/RouterHandlerFactory.java @@ -23,6 +23,7 @@ import io.vertx.ext.web.RoutingContext; import io.vertx.ext.web.handler.BodyHandler; import io.vertx.ext.web.handler.CorsHandler; import io.vertx.ext.web.handler.StaticHandler; +import io.vertx.ext.web.handler.TimeoutHandler; import io.vertx.ext.web.handler.sockjs.SockJSHandler; import io.vertx.ext.web.handler.sockjs.SockJSHandlerOptions; import javassist.CtClass; @@ -39,6 +40,7 @@ import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; +import static cn.qaiu.vx.core.util.ConfigConstant.ROUTE_TIME_OUT; import static io.vertx.core.http.HttpHeaders.*; /** @@ -173,6 +175,8 @@ public class RouterHandlerFactory implements BaseHttpApi { route.consumes(mineType); } + // 设置默认超时 + route.handler(TimeoutHandler.create(SharedDataUtil.getCustomConfig().getInteger(ROUTE_TIME_OUT))); // 先执行拦截方法, 再进入业务请求 route.handler(interceptor); route.handler(ctx -> handlerMethod(instance, method, ctx)).failureHandler(ctx -> { diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java b/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java index 656f7bd..32465b6 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/ConfigConstant.java @@ -10,6 +10,7 @@ public interface ConfigConstant { String CUSTOM_CONFIG = "customConfig"; String ASYNC_SERVICE_INSTANCES = "asyncServiceInstances"; String IGNORES_REG="ignoresReg"; - String BASE_LOCATIONS="baseLocations"; + + String ROUTE_TIME_OUT="routeTimeOut"; } diff --git a/core/src/main/java/cn/qaiu/vx/core/util/SharedDataUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/SharedDataUtil.java index 17690a1..5181e42 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/SharedDataUtil.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/SharedDataUtil.java @@ -32,8 +32,8 @@ public class SharedDataUtil { return (JsonObject) localMap.get(key); } - public static JsonObject getJsonObjectForCustomConfig(String key) { - return getJsonConfig("customConfig").getJsonObject(key); + public static JsonObject getCustomConfig() { + return getJsonConfig("customConfig"); } public static String getStringForCustomConfig(String key) { diff --git a/web-service/src/main/java/cn/qaiu/lz/common/parser/IPanTool.java b/web-service/src/main/java/cn/qaiu/lz/common/parser/IPanTool.java index aed5452..3361b05 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/parser/IPanTool.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/parser/IPanTool.java @@ -23,7 +23,7 @@ public interface IPanTool { static IPanTool shareURLPrefixMatching(String url, String pwd) { - if (url.startsWith(CowTool.SHARE_URL_PREFIX)) { + if (url.contains(CowTool.LINK_KEY)) { return new CowTool(url, pwd); } else if (url.startsWith(EcTool.SHARE_URL_PREFIX)) { return new EcTool(url, pwd); @@ -35,7 +35,7 @@ public interface IPanTool { return new YeTool(url, pwd); } else if (url.startsWith(FjTool.SHARE_URL_PREFIX)) { return new FjTool(url, pwd); - } else if (url.contains("lanzou")) { + } else if (url.contains(LzTool.LINK_KEY)) { return new LzTool(url, pwd); } diff --git a/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/CowTool.java b/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/CowTool.java index 313b795..0e25640 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/CowTool.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/CowTool.java @@ -18,6 +18,8 @@ public class CowTool extends PanBase implements IPanTool { private static final String API_REQUEST_URL = "https://cowtransfer.com/core/api/transfer/share"; public static final String SHARE_URL_PREFIX = "https://cowtransfer.com/s/"; + public static final String LINK_KEY = "cowtransfer.com/s/"; + public CowTool(String key, String pwd) { super(key, pwd); } @@ -30,8 +32,16 @@ public class CowTool extends PanBase implements IPanTool { if ("success".equals(resJson.getString("message")) && resJson.containsKey("data")) { JsonObject dataJson = resJson.getJsonObject("data"); String guid = dataJson.getString("guid"); - String fileId = dataJson.getJsonObject("firstFile").getString("id"); - String url2 = API_REQUEST_URL + "/download?transferGuid=" + guid + "&fileId=" + fileId; + StringBuilder url2Build = new StringBuilder(API_REQUEST_URL + "/download?transferGuid=" + guid); + if (dataJson.getBoolean("zipDownload")) { + // &title=xxx + JsonObject firstFolder = dataJson.getJsonObject("firstFolder"); + url2Build.append("&title=").append(firstFolder.getString("title")); + } else { + String fileId = dataJson.getJsonObject("firstFile").getString("id"); + url2Build.append("&fileId=").append(fileId); + } + String url2 = url2Build.toString(); client.getAbs(url2).send().onSuccess(res2 -> { JsonObject res2Json = res2.bodyAsJsonObject(); if ("success".equals(res2Json.getString("message")) && res2Json.containsKey("data")) { diff --git a/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/LzTool.java b/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/LzTool.java index e5b999f..11242cb 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/LzTool.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/parser/impl/LzTool.java @@ -23,6 +23,8 @@ public class LzTool extends PanBase implements IPanTool { public static final String SHARE_URL_PREFIX = "https://wwwa.lanzoui.com"; + public static final String LINK_KEY = "lanzou"; + public LzTool(String key, String pwd) { super(key, pwd); } diff --git a/web-service/src/main/java/cn/qaiu/lz/common/util/CommonUtils.java b/web-service/src/main/java/cn/qaiu/lz/common/util/CommonUtils.java index 4757a9c..b0f5038 100644 --- a/web-service/src/main/java/cn/qaiu/lz/common/util/CommonUtils.java +++ b/web-service/src/main/java/cn/qaiu/lz/common/util/CommonUtils.java @@ -8,12 +8,16 @@ import java.util.Map; public class CommonUtils { public static String adaptShortPaths(String urlPrefix, String url) { - if (!url.startsWith(urlPrefix)) { - url = urlPrefix + url; - } if (url.endsWith(".html")) { url = url.substring(0, url.length() - 5); } + String prefix = "https://"; + if (!url.startsWith(urlPrefix) && url.startsWith(prefix)) { + urlPrefix = urlPrefix.substring(prefix.length()); + return url.substring(url.indexOf(urlPrefix) + urlPrefix.length()); + } else if (!url.startsWith(urlPrefix)) { + url = urlPrefix + url; + } return url.substring(urlPrefix.length()); } diff --git a/web-service/src/main/java/cn/qaiu/lz/web/http/ServerApi.java b/web-service/src/main/java/cn/qaiu/lz/web/http/ServerApi.java index 774610e..d65f503 100644 --- a/web-service/src/main/java/cn/qaiu/lz/web/http/ServerApi.java +++ b/web-service/src/main/java/cn/qaiu/lz/web/http/ServerApi.java @@ -1,7 +1,7 @@ package cn.qaiu.lz.web.http; import cn.qaiu.lz.common.parser.IPanTool; -import cn.qaiu.lz.common.parser.impl.*; +import cn.qaiu.lz.common.parser.impl.EcTool; import cn.qaiu.lz.web.model.SysUser; import cn.qaiu.lz.web.service.UserService; import cn.qaiu.vx.core.annotaions.RouteHandler; diff --git a/web-service/src/main/java/cn/qaiu/lz/web/service/impl/UserServiceImpl.java b/web-service/src/main/java/cn/qaiu/lz/web/service/impl/UserServiceImpl.java index 5de4ff3..1841eed 100644 --- a/web-service/src/main/java/cn/qaiu/lz/web/service/impl/UserServiceImpl.java +++ b/web-service/src/main/java/cn/qaiu/lz/web/service/impl/UserServiceImpl.java @@ -5,6 +5,8 @@ import cn.qaiu.lz.web.service.UserService; import cn.qaiu.vx.core.annotaions.Service; import io.vertx.core.Future; +import java.util.concurrent.TimeUnit; + /** * lz-web *
Create date 2021/8/27 14:09 @@ -17,6 +19,11 @@ public class UserServiceImpl implements UserService { @Override public Future login(SysUser user) { + try { + TimeUnit.SECONDS.sleep(6); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } return Future.succeededFuture("111"); } } diff --git a/web-service/src/main/resources/app-dev.yml b/web-service/src/main/resources/app-dev.yml index 724c077..a232568 100644 --- a/web-service/src/main/resources/app-dev.yml +++ b/web-service/src/main/resources/app-dev.yml @@ -20,6 +20,8 @@ custom: asyncServiceInstances: 4 # server路由(controller层)所在包路径 baseLocations: cn.qaiu.lz + # 路由处理默认超时时间(毫秒) + routeTimeOut: 15000 # 拦截器包路径 interceptorClassPath: cn.qaiu.lz.common.interceptorImpl.DefaultInterceptor # 拦截器匹配规则 diff --git a/web-service/src/main/resources/http-tools/pan-cow.http b/web-service/src/main/resources/http-tools/pan-cow.http index eefca4f..412dd6f 100644 --- a/web-service/src/main/resources/http-tools/pan-cow.http +++ b/web-service/src/main/resources/http-tools/pan-cow.http @@ -46,15 +46,14 @@ Content-Disposition: form-data; name="email" --WebAppBoundary Content-Disposition: form-data; name="joinProToken" - --WebAppBoundary-- +### +https://cowtransfer.com/core/api/transfer/share/download?transferGuid=eb9df924-7b29-496b-8147-96762fc81d28&title=spring-play ### -git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch web-service/src/main/resources/http-tools/test.http' --prune-empty --tag-name-filter cat -- --all -git push origin master --force -rmdir .git/refs/original/ -git reflog expire --expire=now --all -git gc --prune=now -git gc --aggressive --prune=now +https://cowtransfer.com/core/api/transfer/share/download?transferGuid= + +### +https://cowtransfer.com/core/api/transfer/share/download?transferGuid=eb9df924-7b29-496b-8147-96762fc81d28 diff --git a/web-service/src/main/resources/http-tools/test.http b/web-service/src/main/resources/http-tools/test.http index e0e8532..c2ddd74 100644 --- a/web-service/src/main/resources/http-tools/test.http +++ b/web-service/src/main/resources/http-tools/test.http @@ -28,6 +28,10 @@ GET http://127.0.0.1:6400/cow/e4f41b51b5da4f # @no-redirect GET http://127.0.0.1:6400/parser?url=https://cowtransfer.com/s/9a644fe3e3a748 +### 奶牛 +# @no-redirect +GET http://127.0.0.1:6400/parser?url=https://goldrepo.cowtransfer.com/s/026a638795634b + ### 移动云空间 https://www.ecpan.cn/web/#/yunpanProxy?path=%2F%23%2Fdrive%2Foutside&data=81027a5c99af5b11ca004966c945cce6W9Bf2&isShare=1 # @no-redirect GET http://127.0.0.1:6400/parser?url=https://www.ecpan.cn/web//yunpanProxy?path=%2F%23%2Fdrive%2Foutside&data=81027a5c99af5b11ca004966c945cce6W9Bf2&isShare=1 @@ -94,6 +98,6 @@ GET http://127.0.0.1:6400/ye/iaKtVv-qOECd GET http://127.0.0.1:6400/parser?url=https://www.123pan.com/s/iaKtVv-6OECd.html&pwd=DcGe ### -POST http://127.0.0.1:6400/login1 +POST http://127.0.0.1:6400/login