UNPKG

@smartbear/mcp

Version:

MCP server for interacting SmartBear Products

36 lines (35 loc) 1.23 kB
import { ToolError } from "../../common/types.js"; import { AuthService } from "./auth-service.js"; export class ApiClient { baseUrl; defaultHeaders; constructor(bearerToken, baseUrl) { this.baseUrl = baseUrl.trim().replace(/\/$/, ""); this.defaultHeaders = new AuthService(bearerToken).getAuthHeaders(); } getUrl(endpoint, params) { const url = new URL(this.baseUrl + endpoint); if (params) { Object.entries(params).forEach(([key, value]) => { if (value !== undefined) { url.searchParams.append(key, String(value)); } }); } return url.toString(); } async get(endpoint, params) { const response = await fetch(this.getUrl(endpoint, params), { method: "GET", headers: this.defaultHeaders, }); return await this.validateAndGetResponseBody(response); } async validateAndGetResponseBody(response) { if (!response.ok) { const errorText = await response.text(); throw new ToolError(`Request failed with status ${response.status}: ${errorText}`); } return response.json(); } }