mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-15 20:57:43 +00:00
58 lines
1.4 KiB
JavaScript
58 lines
1.4 KiB
JavaScript
import { findLowestLatencyUrl } from '../utils/network.js';
|
|
import {
|
|
URL_LIB,
|
|
TYPE_PATH,
|
|
RESOURCE_PATH,
|
|
GUIDE_PATH,
|
|
} from './assets/const.js';
|
|
// 保存上次找的节点
|
|
let lastFindFastestUrl = {
|
|
url: null,
|
|
time: 0,
|
|
};
|
|
|
|
/**
|
|
* 获取最快节点
|
|
* @returns {Promise<string>}
|
|
*/
|
|
export const getFatestUrl = async () => {
|
|
if (
|
|
lastFindFastestUrl.url &&
|
|
Date.now() - lastFindFastestUrl.time < 1000 * 60 * 5
|
|
) {
|
|
// 如果上次找到的节点在 5 分钟内,直接返回
|
|
return lastFindFastestUrl.url;
|
|
}
|
|
// 获取最快节点
|
|
const urls = Object.values(URL_LIB);
|
|
const url = findLowestLatencyUrl(urls);
|
|
// 保存节点
|
|
lastFindFastestUrl = {
|
|
url,
|
|
time: Date.now(),
|
|
};
|
|
// 返回节点
|
|
return url;
|
|
};
|
|
|
|
/**
|
|
* 获取远程路径
|
|
* @param {keyof TYPE_PATH} type 资源类型
|
|
* @param {keyof RESOURCE_PATH | keyof GUIDE_PATH} label 资源标签
|
|
* @param {string} name 资源名称
|
|
* @returns
|
|
*/
|
|
export const getRemotePath = async (type, label, name) => {
|
|
const url = await getFatestUrl();
|
|
return `${url}/ZZZeroUID/${type}/${label}/${name}`;
|
|
};
|
|
|
|
/**
|
|
* 获取资源远程路径
|
|
* @param {keyof RESOURCE_PATH} label 资源标签
|
|
* @param {string} name 资源名称
|
|
* @returns {Promise<string>}
|
|
*/
|
|
export const getResourceRemotePath = async (label, name) => {
|
|
return getRemotePath(TYPE_PATH.resource, label, name);
|
|
};
|