import { AcquisitionContext } from '../models/acquisition-context'; import { MembershipAcquisitionContextResponse } from '../types/acquisition-context'; import { InvalidResponseError } from '../errors'; /** * Maps membership response to AcquisitionContext model. * @param acquisitionContextData The acqContexts property in the licence response. * @throws {InvalidResponseError} If the membership request does not return the expected response. * @returns AcquisitionContext instance. */ export function mapAcquisitionContextResponse (acquisitionContextData: MembershipAcquisitionContextResponse): AcquisitionContext { const acquisitionContextMapped: object = { displayName: acquisitionContextData.displayName, logoUrl: acquisitionContextData.logoUrl, name: acquisitionContextData.name, hasRestrictIpRanges: acquisitionContextData.restrictIpRanges, hasRestrictEmailDomains: acquisitionContextData.signupContext.restrictEmailDomains, allowedEmailDomains: acquisitionContextData.signupContext.allowedEmailDomains, hasRestrictBlockedEmailDomains: acquisitionContextData.signupContext.restrictBlockedEmailDomains, blockedEmailDomains: acquisitionContextData.signupContext.blockedEmailDomains, signupWelcomeText: acquisitionContextData.signupContext.signupWelcomeText }; if (Object.values(acquisitionContextMapped).includes(undefined)) { throw new InvalidResponseError('Membership acquisition context response contains undefined values', { acquisitionContextMapped }); } return new AcquisitionContext(acquisitionContextMapped); }