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