from flask import request
from helper_functions import *
from exceptions.skipIterationException import skipItertionException


class DryRunFunction:

    def __init__(self, schema, endpoint, method):
        self.schema = schema
        self.endpoint = endpoint
        self.method = method

    def main(self, key_name, function_path=None):
        body = request.get_json
        function_dict = self.schema.get('paths').get(self.endpoint).get(self.method).get(
            key_name)
        # if key_name == 'functions':
        if function_path == 'init':
            result = execute_function('init', function_dict.get('init'), body)
            return result
        del function_dict['init']
        if function_dict:
            for k, v in function_dict.items():
                try:
                    result = execute_function(k, v, body)
                except skipItertionException:
                    continue
                if result:
                    if result != 1:
                        result['code'] = result.get('cf_code', 'CF300')
                        return result
            return {'cf_code': 'CF200'}
        else:
            return {'cf_code': 'CF200'}


