From ee27b1b3cc3ae6c0c5ed25d85c0993e42cee2341 Mon Sep 17 00:00:00 2001 From: Benoy Bose Date: Sun, 1 Jun 2025 09:36:02 +0530 Subject: [PATCH] Adding missing type inferences --- .../clientRegistration/clientRegistration.ts | 5 +++- functions/src/email/sendEmailSES.ts | 23 ++++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/functions/src/clientRegistration/clientRegistration.ts b/functions/src/clientRegistration/clientRegistration.ts index fe2fafc..a168200 100644 --- a/functions/src/clientRegistration/clientRegistration.ts +++ b/functions/src/clientRegistration/clientRegistration.ts @@ -1,6 +1,9 @@ import { onRequest } from "firebase-functions/v2/https"; import { getCorsHandler } from "../shared/middleware"; import { getAdmin, getLogger } from "../shared/config"; +import { Request } from "firebase-functions/v2/https"; +import { Response } from "express"; + const corsHandler = getCorsHandler(); const admin = getAdmin(); @@ -8,7 +11,7 @@ const logger = getLogger(); export const registerClient = onRequest({ region: '#{SERVICES_RGN}#' -}, async (req, res) => { +}, async (req: Request, res: Response) => { return corsHandler(req, res, async () => { try { if (req.method !== 'POST') { diff --git a/functions/src/email/sendEmailSES.ts b/functions/src/email/sendEmailSES.ts index 78e6875..67b2886 100644 --- a/functions/src/email/sendEmailSES.ts +++ b/functions/src/email/sendEmailSES.ts @@ -2,6 +2,7 @@ import { getLogger } from "../shared/config"; import { getCorsHandler } from "../shared/middleware"; import { onRequest } from "firebase-functions/v2/https"; import { Request } from "firebase-functions/v2/https"; +import { Response } from "express"; import { SESClient } from "@aws-sdk/client-ses"; import { SendEmailCommand, SendRawEmailCommand } from "@aws-sdk/client-ses"; import { HttpsError } from "firebase-functions/v2/https"; @@ -19,8 +20,8 @@ interface EmailRequest { from: string; replyTo?: string; attachments?: Attachment[]; - fileUrl?: string; - fileName?: string; + fileUrl?: string; + fileName?: string; } interface Attachment { @@ -136,13 +137,13 @@ async function downloadFileFromUrl(url: string): Promise { export const sendEmailSES = onRequest({ region: 'asia-south1' -}, (request: Request, response) => { +}, (request: Request, response: Response) => { return corsHandler(request, response, async () => { try { const toAddress = request.body.toAddress; const subject = request.body.subject; const message = request.body.message; - + // Initialize data with basic fields const data: EmailRequest = { to: toAddress, @@ -153,42 +154,42 @@ export const sendEmailSES = onRequest({ replyTo: process.env.SES_REPLY_TO_EMAIL || 'support@fitlien.com', attachments: request.body.attachments as Attachment[] || [] }; - + // Handle file URL if provided if (request.body.fileUrl && request.body.fileName) { logger.info(`Downloading attachment from URL: ${request.body.fileUrl}`); try { const fileContent = await downloadFileFromUrl(request.body.fileUrl); - + // If attachments array doesn't exist, create it if (!data.attachments) { data.attachments = []; } - + // Add the downloaded file as an attachment data.attachments.push({ filename: request.body.fileName, content: fileContent, contentType: mime.lookup(request.body.fileName) || 'application/octet-stream' }); - + logger.info(`Successfully downloaded attachment: ${request.body.fileName}`); } catch (downloadError) { logger.error(`Failed to download attachment: ${downloadError}`); throw new Error(`Failed to process attachment: ${downloadError}`); } } - + if (!data.to || !data.subject || !data.html || !data.from) { throw new HttpsError( 'invalid-argument', 'Missing required email fields' ); } - + logger.info(`Sending Email '${data.subject}' to '${data.to}' from '${data.from}'`); const recipients = Array.isArray(data.to) ? data.to : [data.to]; - + if (data.attachments && data.attachments.length > 0) { const messageResult = await sendEmailWithAttachments(data, recipients); response.status(200).json(messageResult);