Skip to main content
Glama
newsletterService.js1.72 kB
import Joi from 'joi'; import { createContextLogger } from '../utils/logger.js'; import { createNewsletter as createGhostNewsletter } from './ghostServiceImproved.js'; /** * Validation schema for newsletter input */ const newsletterInputSchema = Joi.object({ name: Joi.string().required(), description: Joi.string().optional(), sender_name: Joi.string().optional(), sender_email: Joi.string().email().optional(), sender_reply_to: Joi.string().valid('newsletter', 'support').optional(), subscribe_on_signup: Joi.boolean().strict().optional(), show_header_icon: Joi.boolean().strict().optional(), show_header_title: Joi.boolean().strict().optional(), }); /** * Service layer function to handle the business logic of creating a newsletter. * Validates input and creates a newsletter in Ghost CMS. * @param {object} newsletterInput - Data received from the controller. * @returns {Promise<object>} The created newsletter object from the Ghost API. */ const createNewsletterService = async (newsletterInput) => { const logger = createContextLogger('newsletter-service'); // Validate input const { error, value: validatedInput } = newsletterInputSchema.validate(newsletterInput); if (error) { logger.error('Newsletter input validation failed', { error: error.details[0].message, inputKeys: Object.keys(newsletterInput), }); throw new Error(`Invalid newsletter input: ${error.details[0].message}`); } logger.info('Creating Ghost newsletter', { name: validatedInput.name, hasSenderEmail: !!validatedInput.sender_email, }); const newNewsletter = await createGhostNewsletter(validatedInput); return newNewsletter; }; export { createNewsletterService };

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/jgardner04/Ghost-MCP-Server'

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