Skip to main content
Glama

mcp-google-sheets

client.ts3.23 kB
import { httpClient, HttpMethod, HttpRequest, HttpMessageBody, QueryParams, } from '@activepieces/pieces-common'; export type BitlyAuthProps = { accessToken: string; }; export type BitlyApiCallParams = { method: HttpMethod; resourceUri: string; query?: Record<string, string | number | string[] | undefined>; body?: any; auth: BitlyAuthProps; }; export async function bitlyApiCall<T extends HttpMessageBody>({ method, resourceUri, query, body, auth, }: BitlyApiCallParams): Promise<T> { const { accessToken } = auth; if (!accessToken) { throw new Error('Bitly Access Token is required for authentication'); } const queryParams: QueryParams = {}; if (query) { for (const [key, value] of Object.entries(query)) { if (value !== null && value !== undefined) { queryParams[key] = String(value); } } } const baseUrl = 'https://api-ssl.bitly.com/v4'; const request: HttpRequest = { method, url: `${baseUrl}${resourceUri}`, headers: { Authorization: `Bearer ${accessToken}`, 'Content-Type': 'application/json', }, queryParams, body, }; try { const response = await httpClient.sendRequest<T>(request); return response.body; } catch (error: any) { const statusCode = error.response?.status; const errorData = error.response?.data; const errorMessage = errorData?.description || errorData?.message || 'Unknown error occurred'; switch (statusCode) { case 400: throw new Error( `Bad Request: ${errorMessage}. Please check your input parameters.` ); case 401: throw new Error( 'Authentication Failed: Invalid Access Token. Please verify your Bitly credentials in the connection settings.' ); case 402: throw new Error( `Payment Required: ${errorMessage}. Your account has been suspended or you have reached a usage limit.` ); case 403: throw new Error( `Access Forbidden: ${errorMessage}. You do not have permission to access this resource.` ); case 404: throw new Error( `Resource Not Found: ${errorMessage}. The requested resource does not exist.` ); case 417: throw new Error( `Expectation Failed: ${errorMessage}. You must agree to the latest terms of service.` ); case 422: throw new Error( `Unprocessable Entity: ${errorMessage}. The request was well-formed but was unable to be followed due to semantic errors.` ); case 429: throw new Error( `Rate Limit Exceeded: ${errorMessage}. Too many requests. Please wait before trying again.` ); case 500: throw new Error( 'Internal Server Error: Bitly is experiencing technical difficulties. Please try again later.' ); case 503: throw new Error( 'Service Unavailable: Bitly service is temporarily unavailable. Please try again in a few minutes.' ); default: throw new Error( `Bitly API Error (${statusCode || 'Unknown'}): ${errorMessage}` ); } } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/activepieces/activepieces'

If you have feedback or need assistance with the MCP directory API, please join our Discord server