From efcb64d0ea69d32968607c98e8f37f9355280b82 Mon Sep 17 00:00:00 2001 From: yicheng <11733500+yichengchen@users.noreply.github.com> Date: Tue, 27 Jul 2021 22:22:04 +0800 Subject: [PATCH] fix: healthy check for proxy provider --- ClashX/AppDelegate.swift | 7 +++++++ ClashX/General/ApiRequest.swift | 2 +- ClashX/Views/ProxyGroupSpeedTestMenuItem.swift | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/ClashX/AppDelegate.swift b/ClashX/AppDelegate.swift index 6cfc7ca..4fc354b 100644 --- a/ClashX/AppDelegate.swift +++ b/ClashX/AppDelegate.swift @@ -527,6 +527,13 @@ class AppDelegate: NSObject, NSApplicationDelegate { } } } + + ApiRequest.requestProxyProviderList() { + providers in + providers.providers.forEach { + ApiRequest.healthCheck(proxy: $0.key) + } + } } } diff --git a/ClashX/General/ApiRequest.swift b/ClashX/General/ApiRequest.swift index a4de2b5..ec910c6 100644 --- a/ClashX/General/ApiRequest.swift +++ b/ClashX/General/ApiRequest.swift @@ -288,7 +288,7 @@ class ApiRequest { if res.response?.statusCode == 204 { Logger.log("HeathCheck for \(proxy) finished") } else { - Logger.log("HeathCheck for \(proxy) failed") + Logger.log("HeathCheck for \(proxy) failed:\(res.response?.statusCode ?? -1)") } completeHandler?() } diff --git a/ClashX/Views/ProxyGroupSpeedTestMenuItem.swift b/ClashX/Views/ProxyGroupSpeedTestMenuItem.swift index 928a8ad..b66e14e 100644 --- a/ClashX/Views/ProxyGroupSpeedTestMenuItem.swift +++ b/ClashX/Views/ProxyGroupSpeedTestMenuItem.swift @@ -44,6 +44,18 @@ class ProxyGroupSpeedTestMenuItem: NSMenuItem { @objc func healthCheck() { guard testType == .reTest else { return } ApiRequest.healthCheck(proxy: proxyGroup.name) + ApiRequest.getMergedProxyData { [weak self] proxyResp in + guard let self = self else { return } + var providers = Set() + self.proxyGroup.all?.compactMap{ + proxyResp?.proxiesMap[$0]?.enclosingProvider?.name + }.forEach{ + providers.insert($0) + } + providers.forEach{ + ApiRequest.healthCheck(proxy: $0) + } + } menu?.cancelTracking() } }