处理https://ejabberd-saas.com/远程数据api调用的通用应用程序

djabberd的Python项目详细描述


处理https://ejabberd-saas.com/远程数据api调用的通用应用程序

贾伯德

对于每个特定的任务,必须实现一个处理函数。

安装

pip install djabberd

快速启动

一。在项目url.py中包含django-ejabberd urlconf,如下所示:

url(r'', include('djabberd.urls'),
# For Django==1.8
url(r'', include('djabberd.urls'), namespace='djabberd')

2.在django设置中设置处理程序:

DJABBERD_API_HANDLERS='your.module.path'

根据Ejabberd SaaS的文档,这些端点是必需的(2016年2月1日):

  1. 用户管理:
    1. 身份验证('/auth')
    2. 用户存在(“用户”)
  2. 排班管理:
    1. 检索用户花名册('/floster')
  3. 存档:
    1. 存储('/archive')
    2. 获取('/archive')

每个端点必须有一个函数,应该这样实现:

  • 用户认证(用户名、密码):
    • 如果身份验证有效,则返回true
    • 如果身份验证not有效,则返回false
  • UsRyI存在(用户名):
      <如果用户存在返回> cTIT> true
    • 如果未激活(或未激活),则返回false
  • 检索用户名册(用户名):
    • 以json格式返回花名册
    • 如果用户不存在
    • 返回 false
  • 存档存储(有效载荷)
    • 如果消息已存储,则返回true
    • 如果消息not已存储,则返回包含错误消息的字符串
  • 存档获取(用户名[,对等,之后,之前,限制,聊天类型]
    • 以json格式返回消息历史记录
    • 在任何其他情况下返回false

格式

  • 检索用户名册:

    {"roster": [
        {"username": "CONTACT",
         "subscription": "both",
         "nick": "NICK"},
         ...
      ]}
    
  • 存档存储:

    {"username": "USERNAME1",
     "peer": "USERNAME2",
     "xml": "MESSAGE_STANZA",
     "body": "TEXT",
     "timestamp": "TIMESTAMP",
     "direction": "DIRECTION"}
    
  • 存档:

    {"archive": [{"username": "USERNAME1",
                  "peer": "USERNAME2",
                  "xml": "MESAGE_STANZA",
                  "body": "TEXT",
                  "timestamp": "TIMESTAMP",
                  "direction": "DIRECTION"}, ...]
                  "count" : MESSAGES_NUMBER
    }
    

注意事项

基于Ejabberd SaaS的文档:

  • 如果xmpp jid是“userid@xmppdomain”,只需传递“userid”
  • 如果用户的xmpp jid是“userid@xmppdomain”,只需传递“xmppdomain”
  • 如果从处理程序引发异常,则会将其视为服务器错误
  • 如果成功,返回http 200
  • 如果身份验证失败,则返回http 401
  • 如果不成功,则返回http 401
  • 对于服务器错误返回http 500,这是django的默认行为

运行测试
python setup.py develop
python runtests.py [tests.<tests_module>[.<TestClass>[.<test_method>]]]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从不同的类向jtable添加数据?   apache flink初始化状态导致此错误“java.lang.NullPointerException:Keyed状态只能用于“Keyed流”   java从屏幕调用不同的screen thru按钮   java MySQL数据库用户权限   java JavaFX将边距添加到矩形形状   JavaSpring在集成测试中没有触及ControllerAdvice   java Apache HttpClient POST不适用于实体   安装插件后,java无法在eclipse中找到TestNG选项   web爬虫Java获取web内容跳过中间页以响应到达所需的响应   Java Android Studio libGDX Api 16崩溃   java访问类字节?   java如果要打开socket,如何中断线程?   Java中的运费计算器,得出错误的数字   java是一种事务管理应用程序,无需在方法上使用@transactional   java KeyListener在单击画布后停止工作   java新手询问Android Webview以查看网络摄像头的快照?