Exemple #1
0
class Adapter:
    base_url = 'https://hcaptcha.com/siteverify'
    token = None
    secret_key = None

    def __init__(self, input, secret_key: str = None):
        self.id = input.get('id', '1')
        self.secret_key = secret_key
        self.request_data = input.get('data')
        if self.validate_request_data() and self.secret_key:
            self.bridge = Bridge()
            self.set_params()
            self.create_request()
        else:
            self.result_error(
                'No data or API secret key provided for the adapter')

    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.token = self.request_data.get('token')

    def create_request(self):
        try:
            data = f'response={self.token}&secret={self.secret_key}'
            headers = {'Content-Type': 'application/x-www-form-urlencoded'}
            response = self.bridge.post_request(self.base_url,
                                                data=data,
                                                headers=headers)
            data = response.json()
            print('Response: ', data)
            self.result = data['success']
            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,
        }