handlers/user-benefits/src/benefitsIdentityId.ts (57 lines of code) (raw):

import { Lazy } from '@modules/lazy'; import type { UserBenefitsResponse } from '@modules/product-benefits/schemas'; import { getUserBenefitsExcludingStaff } from '@modules/product-benefits/userBenefits'; import { getProductCatalogFromApi } from '@modules/product-catalog/api'; import { ProductCatalogHelper } from '@modules/product-catalog/productCatalog'; import type { Stage } from '@modules/stage'; import { stageFromEnvironment } from '@modules/stage'; import type { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda'; import { buildHttpResponse } from './response'; import { getTrialInformation } from './trials'; const stage = stageFromEnvironment(); const productCatalogHelper = new Lazy( async () => new ProductCatalogHelper(await getProductCatalogFromApi(stage)), 'Get product catalog helper', ); const getUserBenefitsResponse = async ( stage: Stage, productCatalogHelper: ProductCatalogHelper, identityId: string, ): Promise<UserBenefitsResponse> => { const benefits = await getUserBenefitsExcludingStaff( stage, productCatalogHelper, identityId, ); console.log(`Benefits for user ${identityId} are: `, benefits); const trials = getTrialInformation(benefits); console.log(`Trials for user ${identityId} are: `, trials); return { benefits, trials, }; }; export const benefitsIdentityIdHandler = async ( event: APIGatewayProxyEvent, ): Promise<APIGatewayProxyResult> => { console.log(`Input is ${JSON.stringify(event)}`); const identityId = event.pathParameters?.identityId; if (!identityId) { return { statusCode: 400, body: JSON.stringify({ message: 'Identity ID missing from request path', }), }; } const userBenefitsResponse = await getUserBenefitsResponse( stage, await productCatalogHelper.get(), identityId, ); return buildHttpResponse( stage, event.headers['origin'], userBenefitsResponse, ); };