Skip to main content

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

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

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

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

Uploaded Source

Built Distribution

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.

Supported by

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