Skip to main content

A Python client for the Ejabberd XMLRPC API

Project description

docs

Documentation Status

tests

CircleCI Build Status Coverage Status Scrtinizer Status

package

Requirements Status PyPI Package latest release PyPI Package monthly downloads PyPI Wheel

compatibility

Supported python versions Supported imlementations Supported ejabberd versions

A Python client for the Ejabberd XMLRPC API

  • Free software: MIT license

Installation

pip install pyejabberd

Contributors

A big thanks to the contributors:

Documentation

https://pyejabberd.readthedocs.org/

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 Bob's contacts
client.get_roster(user='bob', host='example.com')

# Add Alice to Bob's contact group Friends
client.add_rosteritem(localuser='bob', localserver='example.com', user='alice', server='example.com', nick='Alice from Wonderland', group='Friends', subs='both')

# Delete Alice from Bob's contacts
client.delete_rosteritem(localuser='bob', localserver='example.com', user='alice', server='example.com')

# 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.11 (2016-03-09)

  • Updated “enum34” version requirement

0.2.10 (2015-09-16)

  • Added API: add_rosteritem

  • Added API: delete_rosteritem

  • Added API: get_roster

0.2.9 (2015-08-12)

  • Bugfix and small improvements

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyejabberd-0.2.11.tar.gz (24.5 kB view details)

Uploaded Source

Built Distribution

pyejabberd-0.2.11-py2.py3-none-any.whl (19.5 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pyejabberd-0.2.11.tar.gz.

File metadata

  • Download URL: pyejabberd-0.2.11.tar.gz
  • Upload date:
  • Size: 24.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pyejabberd-0.2.11.tar.gz
Algorithm Hash digest
SHA256 ced8efc9bf06b3885fc61f4ecbddcfc78a5387c5dceca70fda52e9a9edb63885
MD5 946fb73d8a062f609edf9474e6332cd2
BLAKE2b-256 8570fd2ce96adb3da65e7e40a432df3216d10a976eb4114df4e3d0b025bc1278

See more details on using hashes here.

File details

Details for the file pyejabberd-0.2.11-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for pyejabberd-0.2.11-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 58629f95c51ae879274ddeb8b5114b5f6350470237e2dce2c0f330252f04f17e
MD5 6e21fc11984df671e04b75144d58a5e2
BLAKE2b-256 15f4658ade66dbaf4db6484ba81f6c1015b6ff653debcee3310c52e3d0a17641

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page