Sample websocket client for communicating with wowlet running in "background mode" via websockets.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
dsc df6d4ed158
Add password authentication
pirms 3 gadiem
wowlet_ws_client Add password authentication pirms 3 gadiem
.gitignore Intial commit pirms 3 gadiem
README.md Add password authentication pirms 3 gadiem
requirements.txt Intial commit pirms 3 gadiem
settings.py Intial commit pirms 3 gadiem
setup.cfg Intial commit pirms 3 gadiem
setup.py Intial commit pirms 3 gadiem

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