alibabacloud-devops-mcp-server
Version:
MCP Server for using the alibabacloud-devops API: allows AI assistants to directly participate in development collaboration, helping teams optimize development processes and improve efficiency.
78 lines (77 loc) • 2.83 kB
JavaScript
export class YunxiaoError extends Error {
status;
response;
url;
method;
requestHeaders;
requestBody;
constructor(message, status, response, url, method, requestHeaders, requestBody) {
super(message);
this.status = status;
this.response = response;
this.url = url;
this.method = method;
this.requestHeaders = requestHeaders;
this.requestBody = requestBody;
this.name = "YunxiaoError";
}
}
export class YunxiaoValidationError extends YunxiaoError {
constructor(message, status, response) {
super(message, status, response);
this.name = "YunxiaoValidationError";
}
}
export class YunxiaoResourceNotFoundError extends YunxiaoError {
constructor(resource) {
super(`Resource not found: ${resource}`, 404, { message: `${resource} not found` });
this.name = "YunxiaoResourceNotFoundError";
}
}
export class YunxiaoAuthenticationError extends YunxiaoError {
constructor(message = "Authentication failed") {
super(message, 401, { message });
this.name = "YunxiaoAuthenticationError";
}
}
export class YunxiaoPermissionError extends YunxiaoError {
constructor(message = "Insufficient permissions") {
super(message, 403, { message });
this.name = "YunxiaoPermissionError";
}
}
export class YunxiaoRateLimitError extends YunxiaoError {
resetAt;
constructor(message = "Rate limit exceeded", resetAt) {
super(message, 429, { message, reset_at: resetAt.toISOString() });
this.resetAt = resetAt;
this.name = "YunxiaoRateLimitError";
}
}
export class YunxiaoConflictError extends YunxiaoError {
constructor(message) {
super(message, 409, { message });
this.name = "YunxiaoConflictError";
}
}
export function isYunxiaoError(error) {
return error instanceof YunxiaoError;
}
export function createYunxiaoError(status, response, url, method, requestHeaders, requestBody) {
switch (status) {
case 401:
return new YunxiaoAuthenticationError(response?.message);
case 403:
return new YunxiaoPermissionError(response?.message);
case 404:
return new YunxiaoResourceNotFoundError(response?.message || "Resource");
case 409:
return new YunxiaoConflictError(response?.message || "Conflict occurred");
case 422:
return new YunxiaoValidationError(response?.message || "Validation failed", status, response);
case 429:
return new YunxiaoRateLimitError(response?.message, new Date(response?.reset_at || Date.now() + 60000));
default:
return new YunxiaoError(response?.message || "Yunxiao API error", status, response, url, method, requestHeaders, requestBody);
}
}