Generic application to handle https://ejabberd-saas.com/ Remote Data API calls
Project description
Generic application to handle https://ejabberd-saas.com/ Remote Data API calls
djabberd
For each specific tasks a handler function must be implemented.
Install
pip install djabberd
Quick start
1. Include the django-ejabberd URLconf in your project urls.py like this::
url(r'', include('djabberd.urls'),
# For Django==1.8 url(r'', include('djabberd.urls'), namespace='djabberd')
2. Setup the handler in your Django settings::
DJABBERD_API_HANDLERS='your.module.path'
Based on ejabberd-saas’s documentation those endpoints are required(01-Feb-2016):
User management:
Authentication (‘/auth’)
User exists (‘/user’)
Roster management:
Retrieve user roster (‘/roster’)
Archive:
Store (‘/archive’)
Get (‘/archive’)
There must be one function for each endpoint that should be implemented like this:
user_authentication(username, password):
Returns True if authentication is valid
Returns False if authentication is not valid
user_exists(username):
Returns True if user exists
Returns False if not(or if it is not active)
retrieve_user_roster(username):
Returns the roster in JSON format
Returns False if user does not exist
archive_store(payload)
Returns True if message has been stored
Returns a string containing an error message if message has not been stored
archive_get(username[, peer, after, before, limit, chat_type])
Returns the message history in JSON format
Returns False in any other case
Formats
retrieve_user_roster:
{"roster": [ {"username": "CONTACT", "subscription": "both", "nick": "NICK"}, ... ]}
archive_store:
{"username": "USERNAME1", "peer": "USERNAME2", "xml": "MESSAGE_STANZA", "body": "TEXT", "timestamp": "TIMESTAMP", "direction": "DIRECTION"}
archive_get:
{"archive": [{"username": "USERNAME1", "peer": "USERNAME2", "xml": "MESAGE_STANZA", "body": "TEXT", "timestamp": "TIMESTAMP", "direction": "DIRECTION"}, ...] "count" : MESSAGES_NUMBER }
Considerations
Based on ejabberd-saas’s documentation:
If XMPP JID is “userid@xmppdomain”, just pass “userid”
If XMPP JID of USER is “userid@xmppdomain”, just pass “xmppdomain”
If an exception is raised from your handler it would be treated as a server error
Return HTTP 200 for the successful case
Return HTTP 401 if authentication fails
Return HTTP 401 if it’s not the successful case
Return HTTP 500 for server errors, this is the Django’s default behavior
Running Tests
python setup.py develop python runtests.py [tests.<tests_module>[.<TestClass>[.<test_method>]]]
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
Built Distribution
Hashes for djabberd-0.9.6-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0c443b30f302799aef21cf954e5a989f335a4d9e13905cefb762f89b8fd7c5fc |
|
MD5 | ac5ecad7c583c7fb343cc1af6d78bf01 |
|
BLAKE2b-256 | 6172552d4adde14e5914f8cb760f57ab9541e6282a148f721a5c57422365a18f |