diff options
| author | Kevin <[email protected]> | 2021-05-31 18:58:56 +0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2021-05-31 18:58:56 +0800 |
| commit | d4015f64237b2b429a04af0ebe82fdf883b45b01 (patch) | |
| tree | d5f28b916d02c6cad68befa220b1a50eb40c3be6 /src/misc | |
| parent | 13dcb7d6532a07bb86c54139c9e9d19eb892de4e (diff) | |
Add level query to log websocket url fix #589 (#590)
Diffstat (limited to 'src/misc')
| -rw-r--r-- | src/misc/request-helper.ts | 29 |
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) } |
