def __is_burnable_user(eth_address, tip_value, burn_value): # get_balance token = PrivateChainUtil.get_balance(eth_address) # return result if int(token, 16) >= tip_value + burn_value: return True return False
def test_get_balance_ok(self): test_address = '0x401BA17D89D795B3C6e373c5062F1C3F8979e73B' test_url = 'https://' + os.environ['PRIVATE_CHAIN_EXECUTE_API_HOST'] + '/production/wallet/balance' test_balance = 0x10 magic_lib = MagicMock(return_value=test_balance) with patch('private_chain_util.PrivateChainUtil.send_transaction', magic_lib): result = PrivateChainUtil.get_balance(test_address) self.assertEqual(test_balance, result) _, kwargs = magic_lib.call_args expect_payload = { 'private_eth_address': test_address[2:] } self.assertEqual(test_url, kwargs['request_url']) self.assertEqual(expect_payload, kwargs['payload_dict'])
def exec_main_proc(self): user_id = self.event['requestContext']['authorizer']['claims'][ 'cognito:username'] address = self.event['requestContext']['authorizer']['claims'].get( 'custom:private_eth_address') # 現在のトークン量を取得 # まだウォレットアドレスを作成していないユーザには 0 を返す if address is None: balance = '0x0' elif not UserUtil.exists_private_eth_address(self.dynamodb, user_id): # Cognito上にprivate_eth_addressは存在するが、カストディ規制のウォレット移行が完了していないユーザにも0を返す balance = '0x0' else: balance = PrivateChainUtil.get_balance(address) return {'statusCode': 200, 'body': json.dumps({'result': balance})}