Exemple #1
0
class Adapter:
    def __init__(self, input):
        self.id = input.get('id', '1')
        self.request_data = input.get('data')
        if self.validate_request_data():
            self.bridge = Bridge()
            self.create_request()
        else:
            self.result_error('Invalid data provided')

    def validate_request_data(self):
        """ Validates the incoming data against a pre-defined schema

        :return: True if the data provided is a valid JSON containing a
        dataset key, False otherwise
        """
        schema = Schema(
            {
                'dataset': str,
                Optional('rows'): And(int, lambda n: 0 < n)
            },
            ignore_extra_keys=True)
        return schema.is_valid(self.request_data)

    def create_request(self):
        try:
            data = self.request_data
            data['result'] = self.bridge.request(self.request_data)
            self.result_success(data)
        except Exception as e:
            self.result_error(e)

    def result_success(self, data):
        self.result = {
            'jobRunID': self.id,
            'data': data,
            'statusCode': 200,
        }

    def result_error(self, error):
        self.result = {
            'jobRunID': self.id,
            'status': 'errored',
            'error': f'There was an error: {error}',
            'statusCode': 500,
        }

    def __repr__(self):
        return f'Adapter({self.id!r}, {self.request_data!r})'
Exemple #2
0
class Adapter:
    base_url = 'https://sandbox.swift.com/swift-apitracker/v4/payments'    # '/{uetr}/status' needs to be appended
    from_params = ['ID', 'UETR', 'transaction']
    action_params = ['cancellation', 'status', 'transactions']
    oauth_token = ['oauth', 'token', 'oauth_token']

    def __init__(self, input):
        self.id = input.get('id', '1')
        self.request_data = input.get('data')
        self.result_json = "N/A"
        if self.validate_request_data():
            self.bridge = Bridge()
            self.set_params()
            self.create_request()
        else:
            self.result_error('No data provided')

    def validate_request_data(self):
        if self.request_data is None:
            return False
        if self.request_data == {}:
            return False
        return True

    def set_params(self):
        for param in self.from_params:
            self.from_param = self.request_data.get(param)
            if self.from_param is not None:
                break
        for param in self.action_params:
            self.to_param = self.request_data.get(param)
            if self.to_param is not None:
                break
        for param in self.oauth_token:
            self.oauth = self.request_data.get(param)
            if self.oauth is not None:
                break

    def create_request(self):
        try:
            headers = {"Authorization": "Basic "+self.oauth}
            self.base_url += "/"+self.from_param+"/"+self.to_param
            response = self.bridge.request(self.base_url, headers)
            data = response.json()
            self.result_json = data

            switcher = {
                "transactions": "transaction_status",
                "cancellation": "cancellation_reason_information",
                "status": "transaction_status"
            }
            print("switch case: "+switcher.get(self.to_param, ""))
            self.result = data[switcher.get(self.to_param, "")]

            data['result'] = self.result
            self.result_success(data)

        except Exception as e:
            self.result_error(e)
        finally:
            self.bridge.close()

    def result_success(self, data):
        self.result = {
            'jobRunID': self.id,
            'data': data,
            'result': self.result,
            'statusCode': 200,
        }

    def result_error(self, error):
        self.result = {
            'jobRunID': self.id,
            'status': 'errored',
            'error': f'There was an error: {error}',
            'data': self.result_json,
            'statusCode': 500,
        }
Exemple #3
0
class Adapter:
    base_url = 'https://min-api.cryptocompare.com/data/price'
    from_params = ['base', 'from', 'coin']
    to_params = ['quote', 'to', 'market']

    def __init__(self, input):
        self.id = input.get('id', '1')
        self.request_data = input.get('data')
        if self.validate_request_data():
            self.bridge = Bridge()
            self.set_params()
            self.create_request()
        else:
            self.result_error('No data provided')

    def validate_request_data(self):
        if self.request_data is None:
            return False
        if self.request_data == {}:
            return False
        return True

    def set_params(self):
        for param in self.from_params:
            self.from_param = self.request_data.get(param)
            if self.from_param is not None:
                break
        for param in self.to_params:
            self.to_param = self.request_data.get(param)
            if self.to_param is not None:
                break

    def create_request(self):
        try:
            params = {
                'fsym': self.from_param,
                'tsyms': self.to_param,
            }
            response = self.bridge.request(self.base_url, params)
            data = response.json()
            self.result = data[self.to_param]
            data['result'] = self.result
            self.result_success(data)
        except Exception as e:
            self.result_error(e)
        finally:
            self.bridge.close()

    def result_success(self, data):
        self.result = {
            'jobRunID': self.id,
            'data': data,
            'result': self.result,
            'statusCode': 200,
        }

    def result_error(self, error):
        self.result = {
            'jobRunID': self.id,
            'status': 'errored',
            'error': f'There was an error: {error}',
            'statusCode': 500,
        }
Exemple #4
0
class Adapter:

    def __init__(self, input):
        self.base_url = "https://api.openai.com/v1/engines/davinci/completions"
        self.id = input.get('id', '1')
        self.request_data = input.get('data')
        if self.validate_request_data():
            self.bridge = Bridge()
            self.set_params()
            self.create_request()
        else:
            self.result_error('No data provided')

    def validate_request_data(self):
        if self.request_data is None:
            return False
        if self.request_data == {}:
            return False
        return True

    def set_params(self):
        self.prompt = self.request_data.get("prompt")

    def create_request(self):
        print(pre_prompt + self.prompt)
        try:
            headers={
    "Authorization": f"Bearer {config.API_KEY}",
    "Content-Type": 'application/json'
  }
            json={
                "prompt": pre_prompt + self.prompt,
                "max_tokens": 40,
                "temperature": 0.5,
                "top_p": 1,
                "n": 1,
                "stop": ["#"]
            }
            response = self.bridge.request(self.base_url, json=json, headers=headers)
            data = response.json()['choices'][0]['text']
            if ':' in data:
                data = data.split(':')[1][1:]
            hex_data = binascii.hexlify(data.encode('utf8'))
            bytes_data = '0x' + str(hex_data)[2:-1]
            self.result = bytes_data
            self.result_success(bytes_data)
        except Exception as e:
            self.result_error(e)
        finally:
            self.bridge.close()

    def result_success(self, data):
        self.result = {
            'jobRunID': self.id,
            'data': data,
            'result': self.result,
            'statusCode': 200,
        }

    def result_error(self, error):
        self.result = {
            'jobRunID': self.id,
            'status': 'errored',
            'error': f'There was an error: {error}',
            'statusCode': 500,
        }
class Adapter:
    base_url = 'http://kibana.log4analytics.com:9080/1.0/identifiers/'
    from_params = ['DID_userid']
    to_params = ['quote', 'to', 'market']

    def __init__(self, input):
        self.id = input.get('id', '1')
        self.request_data = input.get('data')
        if self.validate_request_data():
            self.bridge = Bridge()
            self.set_params()
            self.create_request()
        else:
            self.result_error('No data provided')

    def validate_request_data(self):
        if self.request_data is None:
            return False
        if self.request_data == {}:
            return False
        return True

    def set_params(self):
        for param in self.from_params:
            self.from_param = self.request_data.get(param)
            if self.from_param is not None:
                break
        for param in self.to_params:
            self.to_param = self.request_data.get(param)
            if self.to_param is not None:
                break

    def create_request(self):
        try:
            params = {
                'fsym': self.from_param,
                'tsyms': self.to_param,
            }
            print(self.from_param)
            self.base_url = self.base_url + self.from_param
            print(self.base_url)
            response = self.bridge.request(self.base_url, params)
            data = response.json()
            self.result = data['didDocument']['id']
            data['result'] = self.result
            self.result_success(data)
        except Exception as e:
            self.result_error(e)
        finally:
            self.bridge.close()

    def result_success(self, data):
        self.result = {
            'jobRunID': self.id,
            'data': data,
            'result': self.result,
            'statusCode': 200,
        }

    def result_error(self, error):
        self.result = {
            'jobRunID': self.id,
            'status': 'errored',
            'error': f'There was an error: {error}',
            'statusCode': 500,
        }
Exemple #6
0
class Adapter:
    base_url = FRAXSES_API_GATEWAY

    def __init__(self, input):
        self.id = input.get('id', '1')
        self.request_data = input.get('data')
        if self.validate_request_data():
            self.bridge = Bridge()
            self.set_params()
            self.create_request()
        else:
            self.result_error('No data provided')

    def validate_request_data(self):
        if self.request_data is None:
            return False
        if self.request_data == {}:
            return False
        if self.request_data.get('action') is None:
            return False
        return True

    def set_params(self):
        self.param = {}
        self.action = self.request_data.get('action')
        self.params = {
            k: v
            for k, v in self.request_data.items() if k != 'action'
        }
        for key, value in self.params.items():
            self.param[value] = self.request_data.get(key)
            if self.param is None:
                break

    def create_request(self):
        try:
            token = usr_aut(gateway=FRAXSES_API_GATEWAY,
                            username=FRAXSES_USERNAME,
                            password=FRAXSES_PASSWORD)
            logging.info('Token success, token is ' + str(token))
            if token:
                token = token['records'][0]['tok']
                params = {
                    "token": token,
                    "action": self.action,
                    "parameters": self.params
                }
                response = self.bridge.request(self.base_url, params)
                logging.info(params)
                data = response.json()
                logging.info(data)
                self.result = data['result'][0]['serviceresult']['id']
                self.result_success(
                    data=data['result'][0]['serviceresult']['response'],
                    job_run_id=data['result'][0]['serviceresult']['id'])
            else:
                self.result_error(
                    'Fraxses gateway failed to authenticate, token is ' +
                    str(token))
        except Exception as e:
            self.result_error(e)
        finally:
            self.bridge.close()

    def result_success(self, data, job_run_id):
        self.result = {
            'jobRunID': self.id,
            'data': data,
            'result': self.result,
            'statusCode': 200,
        }

    def result_error(self, error):
        self.result = {
            'jobRunID': 1,
            'status': 'errored',
            'error': f'There was an error: {error}',
            'statusCode': 500,
        }
Exemple #7
0
class Adapter:
    base_url = 'https://api.twitter.com/1.1/search/tweets.json'

    def __init__(self, input):
        self.id = input.get('id', '1')
        self.request_data = input.get('data')
        if self.validate_request_data():
            self.bridge = Bridge()
            self.hashtag = self.request_data.get('hashtag', '')
            self.username = self.request_data.get('username', '')
            self.create_request()
        else:
            self.result_error('No data provided')

    def validate_request_data(self):
        if self.request_data is None:
            return False
        if self.request_data == {}:
            return False
        return True

    def create_request(self):
        try:
            if not self.hashtag:
                raise Exception('No hashtag provided')
            params = {
                'q': '#' + self.hashtag,
            }
            headers = {
                "Authorization": "Bearer " + os.environ.get('BEARER_TOKEN')
            }
            response = self.bridge.request(self.base_url,
                                           params,
                                           headers=headers)
            data = response.json()
            self.result = ''
            if self.username:
                for status in data['statuses']:
                    if status['user']['screen_name'] == self.username:
                        self.result = self.username
                        break
            elif data['statuses']:
                self.result = data['statuses'][0]['user']['screen_name']

            data['result'] = self.result
            self.result_success(data)
        except Exception as e:
            self.result_error(e)
        finally:
            self.bridge.close()

    def result_success(self, data):
        self.result = {
            'jobRunID': self.id,
            'data': data,
            'result': self.result,
            'statusCode': 200,
        }

    def result_error(self, error):
        self.result = {
            'jobRunID': self.id,
            'status': 'errored',
            'error': f'There was an error: {error}',
            'statusCode': 500,
        }