@smartbear/mcp
Version:
MCP server for interacting SmartBear Products
36 lines (35 loc) • 1.23 kB
JavaScript
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();
}
}