Sample websocket client for communicating with wowlet running in "background mode" via websockets.
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.
dsc df6d4ed158
Add password authentication
3 år sedan
wowlet_ws_client Add password authentication 3 år sedan
.gitignore Intial commit 3 år sedan
README.md Add password authentication 3 år sedan
requirements.txt Intial commit 3 år sedan
settings.py Intial commit 3 år sedan
setup.cfg Intial commit 3 år sedan
setup.py Intial commit 3 år sedan

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