@lobehub/chat-plugin-sdk
Version:
Lobe Chat Plugin SDK, help you to build an amazing chat plugin for Lobe Chat
91 lines (81 loc) • 2.69 kB
JavaScript
/* eslint-disable sort-keys-fix/sort-keys-fix */
export var PluginErrorType = {
// ******* 业务错误语义 ******* //
PluginMarketIndexNotFound: 'PluginMarketIndexNotFound',
// 插件市场索引解析失败
PluginMarketIndexInvalid: 'PluginMarketIndexInvalid',
// 插件市场索引无效
PluginMetaNotFound: 'PluginMetaNotFound',
// 没有找到插件元数据
PluginMetaInvalid: 'PluginMetaInvalid',
// 插件元数据无效
PluginManifestNotFound: 'PluginManifestNotFound',
// 插件描述文件不存在
PluginManifestInvalid: 'PluginManifestInvalid',
// 插件描述文件格式不正确
PluginSettingsInvalid: 'PluginSettingsInvalid',
// 插件设置不正确
PluginApiNotFound: 'PluginApiNotFound',
// 插件 API 不存在
PluginApiParamsError: 'PluginApiParamsError',
// 插件 API 请求入参有问题
PluginServerError: 'PluginServerError',
// 插件服务端出错
PluginGatewayError: 'PluginGatewayError',
// 插件网关出错
PluginOpenApiInitError: 'PluginOpenApiInitError',
// 插件 OpenAPI 初始化失败
// ******* 客户端错误 ******* //
BadRequest: 400,
Unauthorized: 401,
Forbidden: 403,
ContentNotFound: 404,
// 没找到接口
MethodNotAllowed: 405,
// 不支持
TooManyRequests: 429,
// ******* 服务端错误 ******* //
InternalServerError: 500,
BadGateway: 502,
ServiceUnavailable: 503,
GatewayTimeout: 504
};
/* eslint-enable */
export var getPluginErrorStatus = function getPluginErrorStatus(errorType) {
switch (errorType) {
case PluginErrorType.PluginApiNotFound:
case PluginErrorType.PluginMetaNotFound:
case PluginErrorType.PluginManifestNotFound:
return 404;
case PluginErrorType.PluginMetaInvalid:
case PluginErrorType.PluginMarketIndexInvalid:
case PluginErrorType.PluginManifestInvalid:
return 490;
case PluginErrorType.PluginMarketIndexNotFound:
return 590;
case PluginErrorType.PluginApiParamsError:
case PluginErrorType.PluginSettingsInvalid:
return 422;
}
if (typeof errorType === 'number') return errorType;
return 500;
};
/**
* 创建一个错误响应对象
* @param {IPluginErrorType} errorType - 错误类型
* @param body - 响应体数据
* @returns {Response} - 错误响应对象
*/
export var createErrorResponse = function createErrorResponse(errorType, body) {
// 获取错误类型对应的状态码
var statusCode = getPluginErrorStatus(errorType);
// 构造错误响应数据
var data = {
body: body,
errorType: errorType
};
// 创建并返回错误响应对象
return new Response(JSON.stringify(data), {
status: statusCode
});
};