65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
import { InternalConfig } from './base';
|
||
export declare class Host {
|
||
host: string;
|
||
protocol: InternalConfig['upprotocol'];
|
||
constructor(host: string, protocol: InternalConfig['upprotocol']);
|
||
/**
|
||
* @description 当前 host 是否为冻结状态
|
||
*/
|
||
isFrozen(): boolean;
|
||
/**
|
||
* @param {number} time 单位秒,默认 20s
|
||
* @description 冻结该 host 对象,该 host 将在指定时间内不可用
|
||
*/
|
||
freeze(time?: number): void;
|
||
/**
|
||
* @description 解冻该 host
|
||
*/
|
||
unfreeze(): void;
|
||
/**
|
||
* @description 获取当前 host 的完整 url
|
||
*/
|
||
getUrl(): string;
|
||
/**
|
||
* @description 获取解冻时间
|
||
*/
|
||
getUnfreezeTime(): number | undefined;
|
||
}
|
||
export declare class HostPool {
|
||
private initHosts;
|
||
/**
|
||
* @description 缓存的 host 表,以 bucket 和 accessKey 作为 key
|
||
*/
|
||
private cachedHostsMap;
|
||
/**
|
||
* @param {string[]} initHosts
|
||
* @description 如果在构造时传入 initHosts,则该 host 池始终使用传入的 initHosts 做为可用的数据
|
||
*/
|
||
constructor(initHosts?: string[]);
|
||
/**
|
||
* @param {string} accessKey
|
||
* @param {string} bucketName
|
||
* @param {string[]} hosts
|
||
* @param {InternalConfig['upprotocol']} protocol
|
||
* @returns {void}
|
||
* @description 注册可用 host
|
||
*/
|
||
private register;
|
||
/**
|
||
* @param {string} accessKey
|
||
* @param {string} bucketName
|
||
* @param {InternalConfig['upprotocol']} protocol
|
||
* @returns {Promise<void>}
|
||
* @description 刷新最新的 host 数据,如果用户在构造时该类时传入了 host 或者已经存在缓存则不会发起请求
|
||
*/
|
||
private refresh;
|
||
/**
|
||
* @param {string} accessKey
|
||
* @param {string} bucketName
|
||
* @param {InternalConfig['upprotocol']} protocol
|
||
* @returns {Promise<Host | null>}
|
||
* @description 获取一个可用的上传 Host,排除已冻结的
|
||
*/
|
||
getUp(accessKey: string, bucketName: string, protocol: InternalConfig['upprotocol']): Promise<Host | null>;
|
||
}
|