def preProcessInitData()

in core/actionProxy/owplatform/knative.py [0:0]


def preProcessInitData(initData, valueData, activationData):
    def presentAndType(mapping, key, dataType):
        return key in mapping and isinstance(mapping[key], dataType)

    if len(initData) > 0:
        if presentAndType(initData, 'main', str):
            valueData['main'] = initData['main']
        if presentAndType(initData, 'code', str):
            valueData['code'] = initData['code']

        try:
            if presentAndType(initData, 'binary', bool):
                valueData['binary'] = initData['binary']
            elif 'binary' in initData:
                raise InvalidInitValueType('binary', 'boolean')

            if presentAndType(initData, 'raw', bool):
                valueData['raw'] = initData['raw']
            elif 'raw' in initData:
                raise InvalidInitValueType('raw', 'boolean')

        except InvalidInitValueType as e:
            print(e, file=sys.stderr)
            raise InvalidInitData(e)

        # Action name is a special case, as we have a key collision on "name" between init. data and request
        # param. data so we must save it to its final location as the default Action name as part of the
        # activation data
        if presentAndType(initData, 'name', str):
            if 'action_name' not in activationData or \
               (isinstance(activationData['action_name'], str) and \
                len(activationData['action_name']) == 0):
                activationData['action_name'] = initData['name']