Files
xrpl-dev-portal/_code-samples/quickstart/py/mod8.py

93 lines
2.8 KiB
Python

import xrpl
from xrpl.clients import JsonRpcClient
from xrpl.wallet import Wallet
from datetime import datetime
from xrpl.models.transactions import EscrowCreate, EscrowFinish
from xrpl.models.requests import AccountObjects, AccountTx
testnet_url = "https://s.altnet.rippletest.net:51234"
def add_seconds(numOfSeconds):
new_date = datetime.now()
if new_date != '':
new_date = xrpl.utils.datetime_to_ripple_time(new_date)
new_date = new_date + int(numOfSeconds)
return new_date
def create_time_escrow(seed, amount, destination, finish, cancel):
wallet=Wallet.from_seed(seed)
client=JsonRpcClient(testnet_url)
finish_date = add_seconds(finish)
cancel_date = add_seconds(cancel)
escrow_tx=xrpl.models.transactions.EscrowCreate(
account=wallet.address,
amount=amount,
destination=destination,
finish_after=finish_date,
cancel_after=cancel_date
)
# Submit the transaction and report the results
reply=""
try:
response=xrpl.transaction.submit_and_wait(escrow_tx,client,wallet)
reply=response.result
except xrpl.transaction.XRPLReliableSubmissionException as e:
reply=f"Submit failed: {e}"
return reply
def finish_time_escrow(seed, owner, sequence):
wallet=Wallet.from_seed(seed)
client=JsonRpcClient(testnet_url)
finish_tx=xrpl.models.transactions.EscrowFinish(
account=wallet.address,
owner=owner,
offer_sequence=int(sequence)
)
# Submit the transaction and report the results
reply=""
try:
response=xrpl.transaction.submit_and_wait(finish_tx,client,wallet)
reply=response.result
except xrpl.transaction.XRPLReliableSubmissionException as e:
reply=f"Submit failed: {e}"
return reply
def get_escrows(account):
client=JsonRpcClient(testnet_url)
acct_escrows=AccountObjects(
account=account,
ledger_index="validated",
type="escrow"
)
response=client.request(acct_escrows)
return response.result
def cancel_time_escrow(seed, owner, sequence):
wallet=Wallet.from_seed(seed)
client=JsonRpcClient(testnet_url)
cancel_tx=xrpl.models.transactions.EscrowCancel(
account=wallet.address,
owner=owner,
offer_sequence=int(sequence)
)
# Submit the transaction and report the results
reply=""
try:
response=xrpl.transaction.submit_and_wait(cancel_tx,client,wallet)
reply=response.result
except xrpl.transaction.XRPLReliableSubmissionException as e:
reply=f"Submit failed: {e}"
return reply
def get_transaction(account, ledger_index):
client=JsonRpcClient(testnet_url)
tx_info=AccountTx(
account=account,
ledger_index=int(ledger_index)
)
response=client.request(tx_info)
return response.result