in typescript/src/subscription-status/appleSubStatus.ts [75:103]
export async function handler(
httpRequest: APIGatewayProxyEvent,
): Promise<APIGatewayProxyResult> {
let payload: AppleLinkPayload;
try {
payload = JSON.parse(httpRequest.body ?? '') as AppleLinkPayload;
} catch (e) {
return HTTPResponses.INVALID_REQUEST;
}
try {
const validationResults = await Promise.all(
payload.subscriptions.map((sub) =>
validateReceipt(sub.receipt, { sandboxRetry: true }),
),
);
const flattenedValidationResults = validationResults.reduce(
(agg: AppleValidationResponse[], value) => agg.concat(value),
[],
);
const calculatedResponse = flattenedValidationResults.map(toResponse);
logClientServerStatusDiff(calculatedResponse, payload.subscriptions);
const responsePayload = JSON.stringify(calculatedResponse);
return { statusCode: 200, body: responsePayload };
} catch (e) {
console.log(`Unable to validate receipt(s)`, e);
return HTTPResponses.INTERNAL_ERROR;
}
}