private validateConfigItem()

in source/lambda/filter-kinesis-stream/machine-data-parser.ts [151:196]


    private validateConfigItem(configItem: IConfigItem): void {
        let requiredProperties: string[];

        switch (configItem.type) {
            case ConfigType.MESSAGE_FORMAT:
                requiredProperties = [
                    'msgFormatDataMessagesKeyName',
                    'msgFormatDataAliasDelimiter',
                    'msgFormatDataMessageTimestampKeyName',
                    'msgFormatDataMessageValueKeyName',
                    'msgFormatDataMessageAliasKeyName',
                    'msgFormatDataMessageQualityKeyName',
                    'msgFormatDataMessageTimestampFormat'
                ];
                break;
            case ConfigType.MACHINE_CONFIG:
                const machineConfigItem = configItem as IMachineConfigItem;
                if (machineConfigItem.machineStatusTagName && machineConfigItem.machineStatusTagName.trim() !== '') {
                    let hasStatusValue = false;
                    const statusValues = [
                        'machineStatusUpValue',
                        'machineStatusDownValue',
                        'machineStatusIdleValue'
                    ];

                    statusValues.forEach(statusValue => {
                        if (machineConfigItem[statusValue] && machineConfigItem[statusValue].trim() !== '') {
                            hasStatusValue = true;
                        }
                    });

                    if (!hasStatusValue) {
                        throw new Error('Machine config set a status tag name but no value for up/down/idle');
                    }
                }
                break;
            default:
                throw new Error(`Unexpected Config Type: ${configItem.type}`);
        }

        if (requiredProperties) {
            if (!objectHasRequiredProperties(configItem, requiredProperties, true)) {
                throw new Error('Missing required property');
            }
        }
    }