6
0
Fork 0
Sample websocket client for communicating with wowlet running in "background mode" via websockets.
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
dsc df6d4ed158
Add password authentication
vor 3 Jahren
wowlet_ws_client Add password authentication vor 3 Jahren
.gitignore Intial commit vor 3 Jahren
README.md Add password authentication vor 3 Jahren
requirements.txt Intial commit vor 3 Jahren
settings.py Intial commit vor 3 Jahren
setup.cfg Intial commit vor 3 Jahren
setup.py Intial commit vor 3 Jahren

README.md

WOWlet WS Client

Sample Python asyncio websocket client for communicating with wowlet running in "background mode" via websockets.

This library was made in a few hours, so it's not complete, and should serve as an example and PoC.

Example

First, start wowlet:

./wowlet --background 127.0.0.1:42069

Then run the following script, it will:

  1. Open a wallet
  2. Request a receiving address listing
  3. Run forever
import asyncio

from wowlet_ws_client.client import WowletWSClient


wowlet = WowletWSClient(
    host="127.0.0.1", port=1234, password="sekrit", debug=True)


@wowlet.event("passwordIncorrect")
async def on_password_incorrect(data):
    print(data)


@wowlet.event("passwordSuccess")
async def on_password_success(data):
    print(data)


@wowlet.event("walletList")
async def on_wallet_list(data):
    print("wallet listing received")
    print(data)


@wowlet.event("addressList")
async def on_address_list(data):
    print("address listing received")
    print(data)


@wowlet.event("transactionHistory")
async def on_transaction_history(data):
    print(data)


@wowlet.event("addressBook")
async def on_address_book(data):
    print(data)


@wowlet.event("synchronized")
async def on_synchronized(data):
    # called when the wallet is synchronized with the network
    print(data)


@wowlet.event("transactionCommitted")
async def on_transaction_commited(data):
    # when a transaction was sent
    print(data)


async def main():
    await wowlet.connect()
    await asyncio.sleep(3)
    await wowlet.authenticate()
    await asyncio.sleep(3)

    await wowlet.open_wallet("/home/user/Wownero/wallets/wstest.keys", "test")

    await asyncio.sleep(3)
    await wowlet.address_list(0, 0)

    # hack to keep the script running
    while True:
        await asyncio.sleep(1)

loop = asyncio.get_event_loop()
loop.run_until_complete(main())

Creating a wallet

Default directory = wowlet's default wallet directory

@wowlet.event("walletCreated")
async def on_wallet_created(data):
    print(data)

@wowlet.event("walletCreatedError")
async def on_wallet_created_error(data):
    print("error")
    print(data)

await wowlet.create_wallet("cool_wallet", password="sekrit")

Creating a transaction

address = "WW2cyFaAu4NSpZdpEP3egWcK99QqU8afJEpfZW1HNxofB9sH86Nir5pes7ofwAE3ZWVNdgxFrWeSiSiSLumSeZ7538zCXb6gp"
await wowlet.send_transaction(
    address=address,
    amount=2,
    description="test transaction from Python")

QR

This library can also generate QR codes because why not.

import aiofiles
from wowlet_ws_client.qr import qr_png

addr = "some_address_here"
qr_image = qr_png(addr)

async with aiofiles.open('output.png', mode="wb") as f:
    await f.write(qr_image.getbuffer())

License

BSD