Skip to main content
Glama
auth.ts1.82 kB
import type { Config } from '../config/schema.js'; /** * Auth configuration for request injection */ export interface AuthConfig { type: 'none' | 'apiKey' | 'bearer' | 'basic'; in: 'header' | 'query'; name: string; value?: string; } /** * Build authentication headers/query params based on config */ export function buildAuthHeaders(config: Config['auth']): Record<string, string> { if (config.type === 'none' || !config.value) { return {}; } if (config.type === 'apiKey' && config.in === 'header') { return { [config.name]: config.value }; } if (config.type === 'bearer') { const token = config.value.startsWith('Bearer ') ? config.value : `Bearer ${config.value}`; return { Authorization: token }; } if (config.type === 'basic') { // Value should be "username:password" or already base64 encoded const encoded = config.value.includes(':') ? Buffer.from(config.value).toString('base64') : config.value; return { Authorization: `Basic ${encoded}` }; } return {}; } /** * Build authentication query params based on config */ export function buildAuthQueryParams(config: Config['auth']): Record<string, string> { if (config.type === 'none' || !config.value) { return {}; } if (config.type === 'apiKey' && config.in === 'query') { return { [config.name]: config.value }; } return {}; } /** * Merge auth into request options */ export function applyAuth( headers: Record<string, string>, queryParams: Record<string, string | string[]>, authConfig: Config['auth'] ): { headers: Record<string, string>; queryParams: Record<string, string | string[]> } { return { headers: { ...headers, ...buildAuthHeaders(authConfig) }, queryParams: { ...queryParams, ...buildAuthQueryParams(authConfig) }, }; }

Latest Blog Posts

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/procoders/openapi-mcp-ts'

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