Skip to main content
Glama
PolicyController.ts3.45 kB
import { Request, Response } from 'express'; import { Policy } from '../models'; import { PolicyEngine } from '../services/PolicyEngine'; export class PolicyController { private policyEngine: PolicyEngine; constructor(policyEngine: PolicyEngine) { this.policyEngine = policyEngine; } /** * Get all policies * @param req Request * @param res Response */ public getPolicies(req: Request, res: Response): void { try { // For now, we'll return a simple list of policy IDs // In a real implementation, this would return full policy objects const policies = Array.from(this.policyEngine as any).map((policy: any) => policy.id); res.status(200).json({ policies }); } catch (error) { res.status(500).json({ error: 'Failed to get policies' }); } } /** * Get a policy by ID * @param req Request with policy ID * @param res Response with policy */ public getPolicy(req: Request, res: Response): void { try { const policyId = req.params.policyId; const policy = this.policyEngine.getPolicy(policyId); if (!policy) { res.status(404).json({ error: 'Policy not found' }); return; } res.status(200).json(policy); } catch (error) { res.status(500).json({ error: 'Failed to get policy' }); } } /** * Create a new policy * @param req Request with policy data * @param res Response with created policy */ public createPolicy(req: Request, res: Response): void { try { const policyData: Policy = req.body; // In a real implementation, we would validate the policy data // and generate IDs, timestamps, etc. // For now, we'll just add it to the policy engine (this.policyEngine as any).addPolicy(policyData); res.status(201).json(policyData); } catch (error) { res.status(500).json({ error: 'Failed to create policy' }); } } /** * Update a policy * @param req Request with policy ID and data * @param res Response with updated policy */ public updatePolicy(req: Request, res: Response): void { try { const policyId = req.params.policyId; const policyData: Partial<Policy> = req.body; // Check if policy exists const existingPolicy = this.policyEngine.getPolicy(policyId); if (!existingPolicy) { res.status(404).json({ error: 'Policy not found' }); return; } // In a real implementation, we would update the policy // For now, we'll just return the existing policy res.status(200).json(existingPolicy); } catch (error) { res.status(500).json({ error: 'Failed to update policy' }); } } /** * Delete a policy * @param req Request with policy ID * @param res Response with status */ public deletePolicy(req: Request, res: Response): void { try { const policyId = req.params.policyId; // Check if policy exists const existingPolicy = this.policyEngine.getPolicy(policyId); if (!existingPolicy) { res.status(404).json({ error: 'Policy not found' }); return; } // Remove the policy this.policyEngine.removePolicy(policyId); res.status(200).json({ message: 'Policy deleted successfully' }); } catch (error) { res.status(500).json({ error: 'Failed to delete policy' }); } } }

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/Nom-nom-hub/fullstack-mcp'

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