Toggle Light / Dark / Auto color theme
Toggle table of contents sidebar
Source code for pyjabber.stream.Stream
import enum
import xml.etree.ElementTree as ET
from uuid import uuid4
[docs] class Namespaces ( enum . Enum ):
"""
Defines the available namespaces in the protocol.
"""
XMLSTREAM = "http://etherx.jabber.org/streams"
CLIENT = "jabber:client"
SERVER = "jabber:server"
[docs] class Stream ( ET . Element ):
[docs] class Namespaces ( enum . Enum ):
XMLSTREAM = "http://etherx.jabber.org/streams"
CLIENT = "jabber:client"
SERVER = "jabber:server"
def __init__ (
self ,
id = None ,
from_ = None ,
to = None ,
version = "1.0" ,
xml_lang = "en" ,
xmlns = Namespaces . CLIENT . value ):
if not id :
id = str ( uuid4 ())
attrib = {
k : v for k , v in (
( "id" , id ),
( "from" , from_ ),
( "to" , to ),
( "version" , version ),
( "xml:lang" , xml_lang ),
( "xmlns" , xmlns )) if v is not None
}
attrib [ "xmlns:stream" ] = Namespaces . XMLSTREAM . value
super () . __init__ ( "stream:stream" , attrib )
[docs] def open_tag ( self ) -> bytes :
tag = f '< { self . tag } '
for a in self . attrib :
tag += f " { a } =' { self . attrib [ a ] } '"
tag += '>'
return tag . encode ()
[docs] def responseStream ( attrs ):
attrs = dict ( attrs )
id = str ( uuid4 ())
from_ = attrs . pop (( None , "from" ), None )
to = attrs . pop (( None , "to" ), None )
version = attrs . pop (( None , "version" ), "1.0" )
lang = attrs . pop (( "http://www.w3.org/XML/1998/namespace" , "lang" ), None )
stream = Stream (
id = id ,
from_ = to ,
to = from_ ,
version = version ,
xml_lang = lang
)
return stream . open_tag ()