from http.client import HTTPSConnection from base64 import b64encode from json import loads from json import dumps class RestClient: domain = "api.dataforseo.com" def __init__(self, username, password): self.username = username self.password = password def request(self, path, method, data=None): connection = HTTPSConnection(self.domain) try: base64_bytes = b64encode( ("%s:%s" % (self.username, self.password)).encode("ascii") ).decode("ascii") headers = {'Authorization' : 'Basic %s' % base64_bytes, 'Content-Encoding' : 'gzip'} connection.request(method, path, headers=headers, body=data) response = connection.getresponse() return loads(response.read().decode()) finally: connection.close() def get(self, path): return self.request(path, 'GET') def post(self, path, data): if isinstance(data, str): data_str = data else: data_str = dumps(data) return self.request(path, 'POST', data_str)