diff --git a/scratch_file b/scratch_folder/scratch_file similarity index 74% rename from scratch_file rename to scratch_folder/scratch_file index b315c66..add56f2 100644 --- a/scratch_file +++ b/scratch_folder/scratch_file @@ -59,9 +59,7 @@ def checksumCheck(method, address): else: return False -''' -''' k = sha3.keccak_256() print("First 65: " + str(address_type[:-65])) print(hash64) @@ -77,7 +75,7 @@ def checksumCheck(method, address): - ''' + valid = re.compile(r"^(bc1|[13])[a-zA-HJ-NP-Z0-9]{25,39}$") if valid.match(address) is None: return False @@ -180,4 +178,40 @@ def decode_monero_address(encoded): #print("Keccak256:", binascii.hexlify(keccak256)) #print(binascii.hexlify(keccak256), checksum) - return False \ No newline at end of file + return False + + + +# class +class RPCXMR(object): + def __init__(self, url, user, password): + self._session = requests.Session() + self._url = url + self._user = user + self._pass = password + self._headers = {} + + def call(self, rpcMethod, params): + payload = json.dumps({"method": rpcMethod, "params": params, "jsonrpc": "2.0"}) + tries = 3 + hadConnectionFailures = False + while True: + try: + response = self._session.post(self._url, headers=self._headers, data=payload, auth=HTTPDigestAuth(self._user, self._pass), timeout=15) + except requests.exceptions.ConnectionError: + tries -= 1 + if tries == 0: + raise Exception('Failed to connect for remote procedure call.') + hadFailedConnections = True + print("Couldn't connect for remote procedure call, will sleep for two seconds and then try again ({} more tries)".format(tries)) + #time.sleep(2) + else: + if hadConnectionFailures: + print('Connected for remote procedure call after retry.') + break + if not response.status_code in (200, 500): + raise Exception('RPC connection failure: ' + str(response.status_code) + ' ' + response.reason) + responseJSON = response.json() + if 'error' in responseJSON and responseJSON['error'] != None: + raise Exception('Error in RPC call: ' + str(responseJSON['error'])) + return responseJSON['result'] \ No newline at end of file diff --git a/sub.py b/scratch_folder/sub.py similarity index 100% rename from sub.py rename to scratch_folder/sub.py diff --git a/test.py b/scratch_folder/test.py similarity index 100% rename from test.py rename to scratch_folder/test.py