Add XEP-0196 for User Gaming, from mathieui
This commit is contained in:
parent
44e2b5d945
commit
9ba5b644cf
5 changed files with 135 additions and 0 deletions
1
setup.py
1
setup.py
|
@ -97,6 +97,7 @@ packages = [ 'sleekxmpp',
|
|||
'sleekxmpp/plugins/xep_0184',
|
||||
'sleekxmpp/plugins/xep_0186',
|
||||
'sleekxmpp/plugins/xep_0191',
|
||||
'sleekxmpp/plugins/xep_0196',
|
||||
'sleekxmpp/plugins/xep_0198',
|
||||
'sleekxmpp/plugins/xep_0199',
|
||||
'sleekxmpp/plugins/xep_0202',
|
||||
|
|
|
@ -56,6 +56,7 @@ __all__ = [
|
|||
'xep_0184', # Message Receipts
|
||||
'xep_0186', # Invisible Command
|
||||
'xep_0191', # Blocking Command
|
||||
'xep_0196', # User Gaming
|
||||
'xep_0198', # Stream Management
|
||||
'xep_0199', # Ping
|
||||
'xep_0202', # Entity Time
|
||||
|
|
16
sleekxmpp/plugins/xep_0196/__init__.py
Normal file
16
sleekxmpp/plugins/xep_0196/__init__.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
"""
|
||||
SleekXMPP: The Sleek XMPP Library
|
||||
Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
|
||||
This file is part of SleekXMPP.
|
||||
|
||||
See the file LICENSE for copying permission.
|
||||
"""
|
||||
|
||||
from sleekxmpp.plugins.base import register_plugin
|
||||
|
||||
from sleekxmpp.plugins.xep_0196 import stanza
|
||||
from sleekxmpp.plugins.xep_0196.stanza import UserGaming
|
||||
from sleekxmpp.plugins.xep_0196.user_gaming import XEP_0196
|
||||
|
||||
|
||||
register_plugin(XEP_0196)
|
20
sleekxmpp/plugins/xep_0196/stanza.py
Normal file
20
sleekxmpp/plugins/xep_0196/stanza.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
"""
|
||||
SleekXMPP: The Sleek XMPP Library
|
||||
Copyright (C) 2012 Nathanael C. Fritz, Lance J.T. Stout
|
||||
This file is part of SleekXMPP.
|
||||
|
||||
See the file LICENSE for copying permission.
|
||||
"""
|
||||
|
||||
from sleekxmpp.xmlstream import ElementBase, ET
|
||||
|
||||
|
||||
class UserGaming(ElementBase):
|
||||
|
||||
name = 'gaming'
|
||||
namespace = 'urn:xmpp:gaming:0'
|
||||
plugin_attrib = 'gaming'
|
||||
interfaces = set(['character_name', 'character_profile', 'name',
|
||||
'level', 'server_address', 'server_name', 'uri'])
|
||||
sub_interfaces = interfaces
|
||||
|
97
sleekxmpp/plugins/xep_0196/user_gaming.py
Normal file
97
sleekxmpp/plugins/xep_0196/user_gaming.py
Normal file
|
@ -0,0 +1,97 @@
|
|||
"""
|
||||
SleekXMPP: The Sleek XMPP Library
|
||||
Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout
|
||||
This file is part of SleekXMPP.
|
||||
|
||||
See the file LICENSE for copying permission.
|
||||
"""
|
||||
|
||||
import logging
|
||||
|
||||
from sleekxmpp.plugins.base import BasePlugin
|
||||
from sleekxmpp.plugins.xep_0196 import stanza, UserGaming
|
||||
|
||||
|
||||
log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class XEP_0196(BasePlugin):
|
||||
|
||||
"""
|
||||
XEP-0196: User Gaming
|
||||
"""
|
||||
|
||||
name = 'xep_0196'
|
||||
description = 'XEP-0196: User Gaming'
|
||||
dependencies = set(['xep_0163'])
|
||||
stanza = stanza
|
||||
|
||||
def plugin_end(self):
|
||||
self.xmpp['xep_0030'].del_feature(feature=UserGaming.namespace)
|
||||
self.xmpp['xep_0163'].remove_interest(UserGaming.namespace)
|
||||
|
||||
def session_bind(self, jid):
|
||||
self.xmpp['xep_0163'].register_pep('user_gaming', UserGaming)
|
||||
|
||||
def publish_gaming(self, name=None, level=None, server_name=None, uri=None,
|
||||
character_name=None, character_profile=None, server_address=None,
|
||||
options=None, ifrom=None, block=True, callback=None, timeout=None):
|
||||
"""
|
||||
Publish the user's current gaming status.
|
||||
|
||||
Arguments:
|
||||
name -- The name of the game.
|
||||
level -- The user's level in the game.
|
||||
uri -- A URI for the game or relevant gaming service
|
||||
server_name -- The name of the server where the user is playing.
|
||||
server_address -- The hostname or IP address of the server where the
|
||||
user is playing.
|
||||
character_name -- The name of the user's character in the game.
|
||||
character_profile -- A URI for a profile of the user's character.
|
||||
options -- Optional form of publish options.
|
||||
ifrom -- Specify the sender's JID.
|
||||
block -- Specify if the send call will block until a response
|
||||
is received, or a timeout occurs. Defaults to True.
|
||||
timeout -- The length of time (in seconds) to wait for a response
|
||||
before exiting the send call if blocking is used.
|
||||
Defaults to sleekxmpp.xmlstream.RESPONSE_TIMEOUT
|
||||
callback -- Optional reference to a stream handler function. Will
|
||||
be executed when a reply stanza is received.
|
||||
"""
|
||||
gaming = UserGaming()
|
||||
gaming['name'] = name
|
||||
gaming['level'] = level
|
||||
gaming['uri'] = uri
|
||||
gaming['character_name'] = character_name
|
||||
gaming['character_profile'] = character_profile
|
||||
gaming['server_name'] = server_name
|
||||
gaming['server_address'] = server_address
|
||||
return self.xmpp['xep_0163'].publish(gaming,
|
||||
node=UserGaming.namespace,
|
||||
options=options,
|
||||
ifrom=ifrom,
|
||||
block=block,
|
||||
callback=callback,
|
||||
timeout=timeout)
|
||||
|
||||
def stop(self, ifrom=None, block=True, callback=None, timeout=None):
|
||||
"""
|
||||
Clear existing user gaming information to stop notifications.
|
||||
|
||||
Arguments:
|
||||
ifrom -- Specify the sender's JID.
|
||||
block -- Specify if the send call will block until a response
|
||||
is received, or a timeout occurs. Defaults to True.
|
||||
timeout -- The length of time (in seconds) to wait for a response
|
||||
before exiting the send call if blocking is used.
|
||||
Defaults to sleekxmpp.xmlstream.RESPONSE_TIMEOUT
|
||||
callback -- Optional reference to a stream handler function. Will
|
||||
be executed when a reply stanza is received.
|
||||
"""
|
||||
gaming = UserGaming()
|
||||
return self.xmpp['xep_0163'].publish(gaming,
|
||||
node=UserGaming.namespace,
|
||||
ifrom=ifrom,
|
||||
block=block,
|
||||
callback=callback,
|
||||
timeout=timeout)
|
Loading…
Reference in a new issue