UNPKG

@goparrot/franchise-mcp-server

Version:

MCP Server for Franchise API

43 lines (42 loc) 1.54 kB
import { getRequestHeaders, handleResponse } from '../config/index.js'; import { buildEndpoint } from './build-endpoint.js'; /** * Generic request handler */ export async function makeRequest(methodInfo, config) { const { baseUrl, args, accessToken } = config; const pathParams = {}; const queryParams = {}; const bodyParams = { ...args }; // Extract path parameters methodInfo.pathParams.forEach((param) => { const value = args[param.name]; if (value !== undefined) { pathParams[param.name] = String(value); delete bodyParams[param.name]; } else if (param.required) { throw new Error(`Missing required path parameter: ${param.name}`); } }); // Extract query parameters methodInfo.queryParams?.forEach((param) => { const value = args[param.name]; if (value !== undefined) { queryParams[param.name] = String(value); delete args[param.name]; } }); const endpoint = buildEndpoint(methodInfo, pathParams, queryParams); const method = methodInfo.method.toUpperCase(); const requestOptions = { method, headers: getRequestHeaders(accessToken), }; // Add body for write operations if (['POST', 'PUT', 'PATCH'].includes(method) && Object.keys(bodyParams).length > 0) { requestOptions.body = JSON.stringify(bodyParams); } const response = await fetch(`${baseUrl}${endpoint}`, requestOptions); return handleResponse(response); }