summaryrefslogtreecommitdiff
path: root/src/misc
diff options
context:
space:
mode:
authorKevin <[email protected]>2021-05-31 18:58:56 +0800
committerGitHub <[email protected]>2021-05-31 18:58:56 +0800
commitd4015f64237b2b429a04af0ebe82fdf883b45b01 (patch)
treed5f28b916d02c6cad68befa220b1a50eb40c3be6 /src/misc
parent13dcb7d6532a07bb86c54139c9e9d19eb892de4e (diff)
Add level query to log websocket url fix #589 (#590)
Diffstat (limited to 'src/misc')
-rw-r--r--src/misc/request-helper.ts29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/misc/request-helper.ts b/src/misc/request-helper.ts
index 1096a67..c982c97 100644
--- a/src/misc/request-helper.ts
+++ b/src/misc/request-helper.ts
@@ -1,5 +1,6 @@
import { trimTrailingSlash } from 'src/misc/utils';
import { ClashAPIConfig } from 'src/types';
+import { LogsAPIConfig } from 'src/types';
const headersCommon = { 'Content-Type': 'application/json' };
@@ -10,6 +11,12 @@ function genCommonHeaders({ secret }: { secret?: string }) {
}
return h;
}
+function buildWebSocketURLBase(baseURL: string, params: URLSearchParams, endpoint: string) {
+ let qs = '?' + params.toString()
+ const url = new URL(baseURL);
+ url.protocol === 'https:' ? (url.protocol = 'wss:') : (url.protocol = 'ws:');
+ return `${trimTrailingSlash(url.href)}${endpoint}${qs}`;
+}
export function getURLAndInit({ baseURL, secret }: ClashAPIConfig) {
const headers = genCommonHeaders({ secret });
@@ -21,11 +28,19 @@ export function getURLAndInit({ baseURL, secret }: ClashAPIConfig) {
export function buildWebSocketURL(apiConfig: ClashAPIConfig, endpoint: string) {
const { baseURL, secret } = apiConfig;
- let qs = '';
- if (typeof secret === 'string' && secret !== '') {
- qs += '?token=' + encodeURIComponent(secret);
- }
- const url = new URL(baseURL);
- url.protocol === 'https:' ? (url.protocol = 'wss:') : (url.protocol = 'ws:');
- return `${trimTrailingSlash(url.href)}${endpoint}${qs}`;
+ const params = new URLSearchParams({
+ token: secret,
+ });
+
+ return buildWebSocketURLBase(baseURL, params, endpoint)
+}
+
+export function buildLogsWebSocketURL(apiConfig: LogsAPIConfig, endpoint: string) {
+ const { baseURL, secret, logLevel } = apiConfig;
+ const params = new URLSearchParams({
+ token: secret,
+ level: logLevel,
+ });
+
+ return buildWebSocketURLBase(baseURL, params, endpoint)
}