Skip to main content

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):

  1. User management:

    1. Authentication (‘/auth’)

    2. User exists (‘/user’)

  2. Roster management:

    1. Retrieve user roster (‘/roster’)

  3. Archive:

    1. Store (‘/archive’)

    2. 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>]]]

Download files

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

Source Distribution

djabberd-0.9.6.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

djabberd-0.9.6-py2.py3-none-any.whl (21.9 kB view details)

Uploaded Python 2Python 3

File details

Details for the file djabberd-0.9.6.tar.gz.

File metadata

  • Download URL: djabberd-0.9.6.tar.gz
  • Upload date:
  • Size: 5.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for djabberd-0.9.6.tar.gz
Algorithm Hash digest
SHA256 284806662cc5afc3e79b6e3cc03895e282ea672616fd2e6a96b2abfbab1af603
MD5 3d8924c5c93c471aa08a0417bb6c6ba9
BLAKE2b-256 db2dc7594621cd67f6a87d43438711899ded3f1846c8e7b22162e16308215e49

See more details on using hashes here.

File details

Details for the file djabberd-0.9.6-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for djabberd-0.9.6-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0c443b30f302799aef21cf954e5a989f335a4d9e13905cefb762f89b8fd7c5fc
MD5 ac5ecad7c583c7fb343cc1af6d78bf01
BLAKE2b-256 6172552d4adde14e5914f8cb760f57ab9541e6282a148f721a5c57422365a18f

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.9.6 This release

2 files

0.9.5

2 files

0.9.3

2 files

0.9.2

2 files

0.9.1

2 files

0.9

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page