A Python client for the Ejabberd XMLRPC API
Project description
docs |
|
---|---|
tests |
|
package |
|
compatibility |
A Python client for the Ejabberd XMLRPC API
Free software: MIT license
Installation
pip install pyejabberd
Documentation
Usage
from pyejabberd import EjabberdAPIClient
# Create a client and authenticate with elevated user 'bob@example.com'
client = EjabberdAPIClient(host='localhost', port=5222, username='bob', password='p@$$wd', user_domain='example.com',
protocol='https')
# Test the connection by sending an echo request to the server
sentence = 'some random data'
result = client.echo(sentence)
assert result == sentence
# Get a list of users that are on the server
registered_users = client.registered_users('example.com')
# result is in the format [{'username': 'bob', ...}]
# Register a new user
client.register(user='alice', host='example.com', password='@l1cepwd')
# Change a password
client.change_password(user='alice', host='example.com', newpass='newpwd')
# Verify password
assert client.check_password_hash(user='bob', host='example.com', password='newpwd') is True
# Set nickname
client.set_nickname(user='bob', host='example.com', nickname='Bob the builder')
# Get list of *all* connected users
client.connected_users()
# Get list of *all* connected users and information about their sessions
client.connected_users_info()
# Get number of connected users
client.connected_users_number()
# Get information for all sessions for a user
client.user_sessions_info(user="jim", host="example.com"):
# Get muc rooms
muc_online_rooms = client.muc_online_rooms()
# result is in the format ['room1@conference', ...] where 'conference' is the muc service name
# Create a muc room
client.create_room(name='room1', service='conference', host='example.com')
# Get room options
room_options = client.get_room_options(name='room1', service='conference')
# Set room option
from pyejabberd.muc.enums import MUCRoomOption
client.change_room_option(name='room1', service='conference', option=MUCRoomOption.public, value=False)
client.change_room_option(name='room1', service='conference', option=MUCRoomOption.members_only, value=True)
# Set room affiliation
from pyejabberd.muc.enums import Affiliation
client.set_room_affiliation(name='room1', service='conference', jid='alice@example.com', affiliation=Affiliation.member)
# Get room affiliations
affiliations = client.get_room_affiliations(name='room1', service='conference')
# Destroy a muc room
client.destroy_room(name='room1', service='conference', host='example.com')
# Unregister a user
client.unregister(user='alice', host='example.com')
Development
To run the all tests run:
tox
Changelog
0.2.8 (2015-08-03)
Added testing against Ejabberd 15.07
0.2.7 (2015-07-28)
Added API: connected_users
Added API: connected_users_info
Added API: connected_users_number
Added API: user_sessions_info
0.2.6 (2015-07-14)
Added API: set_room_affiliation
Added API: get_room_affiliations
0.2.5 (2015-07-07)
Python 2/3 compatibility
Fixed failing build
0.2.4 (2015-07-06)
Made constructor more strict (no more kwargs)
Added optional function to create a client instance from a service url, compliant with the ‘12factor app’ idea
0.2.3 (2015-06-18)
Improved test suite
Made some enums more explicit
Aligned MUC room options with currently supported options in Ejabberd, build from master branch
0.2.2 (2015-05-25)
Cleanup and more tests
0.2.1 (2015-05-25)
Refactored method validator/serializer system
0.2.0 (2015-05-20)
Big refactor, interface changed to better match the ejabberdctl interface.
0.1.2 (2015-05-16)
Fixed build scripts.
0.1.1 (2015-05-16)
Some bugfixes.
0.1.0 (2015-05-16)
First release on PyPI.
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 pyejabberd-0.2.8-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd4550a8a173fa7401f129461260077420707c6bd34f90ab0eb7e40e0a0dfc8a |
|
MD5 | b459696181f718d367b72cb2b552aa3d |
|
BLAKE2b-256 | 4fda1441300be4431cc27d49087a706f54c96c7d8fd52ebe04fb5e668287ddda |