Client library for communicating with HappyPanda X servers
Project description
happypandax-client
A python client library for communicating with HappyPanda X servers
Installing
Install and update using pip
$ pip3 install happypandax-client
Example
Get up and running fast:
import happypandax_client as hpxclient
from pprint import pprint
c = hpxclient.Client("my-client")
c.connect(host="localhost", port=7007)
c.handshake(user = None, password = None)
d = c.send([{"fname": "get_version"}])
pprint(d)
API
Client (name, host="localhost", port=7007, session_id="", ssl_context=None, timeout=60) → A Client instance
A client for communicating with a HappyPanda X server.
Args:
name
: name of clienthost
: HPX server hostport
: HPX server hostsession_id
: if provided, this will be the session id used in messagesssl_context
: seessl.create_default_context
timeout
: seesocket.settimeout
Client.host (property) → str
Set or return the HPX server host
Client.port (property) → int
Set or return the HPX server port
Client.accepted (property) → bool
Whether this client has been authenticated or not (this value will only be available after connecting)
Client.version (property) → dict
The version message returned from the HPX server (this value will only be available after connecting)
Client.guest_allowed (property) → bool
Whether guests are allowed on the connected HPX server (this value will only be available after connecting)
Client.ready () → bool
Whether this client is ready to exchange messages with the HPX server
Client.alive () → bool
Whether the connection is still alive
Client.connect (self, host=None, port=None) → bool
Connect to HPX server
Args:
host
: HPX server host, if set toNone
the provided host on instantiation will be usedport
: HPX server port, if set toNone
the provided port on instantiation will be used
Client.handshake (self, user=None, password=None, ignore_err=False, _data={}) → bool
Perfom a handshake with the HPX server
Args:
user
: usernamepassword
: passwordignore_err
: don't raise any errors
Client.request_handshake (self, user=False, password=False, ignore_err=False) → bool
Basically a re-login
Args:
user
: username, if set toFalse
the previously provided username will be usedpassword
: password, if set toFalse
the previously provided password will be usedignore_err
: don't raise any errors
Client.send_bytes (self, data, raise_on_auth=True) → bytes
Send bytedata to server. Receive bytedata from server.
Args:
data
: bytes data to send to serverraise_on_auth
: raise an error if client is not authenticated
Client.send_raw (self, data, raise_on_auth=True, encoding='utf-8') → dict
Send json-compatible dict to server. Receive json-compatible from server.
Note that this method will not add anything to your message and expects you to add the name and session yourself. See the finalize function.
Args:
data
: data to send to server, this is a dictraise_on_auth
: raise an error if client is not authenticatedencoding
: bytes encoding, there shouldn't be a reason to change this
Client.send (self, data, raise_on_auth=True, encoding='utf-8') → dict
Like Client.send_raw, but as a convenience, this method will wrap your message into the required message structure HPX expects and automatically sets the session and name:
final_msg = {
'session': client.session_id,
'name': client.name,
'data': data, # <--- your message is put here
}
Args:
data
: data to send to server, this is usually a list of dictsraise_on_auth
: raise an error if client is not authenticatedencoding
: bytes encoding, there shouldn't be a reason to change this
Client.close () → None
Close connection with server. Note that it won't be possible to connect again after the connection has been closed.
finalize (name, data, session_id="") → dict
A helper function that will wrap your message up like this:
msg = {
'session': session_id,
'name': name,
'data': data, # <--- your message is put here
}
Args:
name
: name of clientdata
: data to send to server, this is usually a list of dictssession_id
: session id
These are all the exceptions that can be raised by the client:
ClientError(Exception)
Base client exception, all client exceptions will derive from this
ConnectionError(ClientError, ConnectionError)
Server connection error
ServerDisconnectError(ConnectionError, ConnectionAbortedError)
Server disconnected
AuthError(ClientError)
Auth Base Error
AuthRequiredError(AuthError)
AuthWrongCredentialsError(AuthError)
AuthMissingCredentials(AuthError)
JSONParseError(ClientError)
Extra
Using a different json library
It must support being used as a drop-in replacement for the standard json
module
import happypandax_client as hpxclient
import ujson
hpxclient.client.json = ujson
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for happypandax_client-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10796ba034a9526dbd29e1a68a5a9cb8426e7977f193e91adbaf00ca0447e936 |
|
MD5 | ddf63929b7fd420338f30b0b2b387280 |
|
BLAKE2b-256 | 35569c17c7c3bc7b60951c7d728cb7c8abb8b7bd30e43a9b5da4efc0a20bfbd6 |