home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.5)
-
- from pyxmpp.jabber.dataforms import DATAFORM_NS
- from pyxmpp.jabber.dataforms import Form
- from pyxmpp.jabber import dataforms
- from pyxmpp.utils import to_utf8
- from pyxmpp.xmlextra import common_doc
- from pyxmpp.utils import from_utf8
- from pyxmpp.xmlextra import get_node_ns_uri
- import libxml2
- from si import *
- SI_FILETRANSFER_NS = SI_NS + '/profile/file-transfer'
- FEATURE_NEG_NS = 'http://jabber.org/protocol/feature-neg'
-
- class SI_FileTransfer(SI):
-
- def __init__(self, xmlnode_or_id = None, mime_type = None):
- SI.__init__(self, xmlnode_or_id = xmlnode_or_id, mime_type = mime_type, profile_ns = SI_FILETRANSFER_NS)
- self.file = None
- self.feature = None
- if isinstance(xmlnode_or_id, libxml2.xmlNode):
- self.from_xml(xmlnode_or_id)
-
-
-
- def from_xml(self, node, strict = True):
- n = node.children
- while n:
- if n.type != 'element':
- n = n.next
- continue
-
- ns = get_node_ns_uri(n)
- if ns and ns != SI_FILETRANSFER_NS and ns != FEATURE_NEG_NS:
- n = n.next
- continue
-
- if n.name == 'file':
-
- try:
- self.file = File(n)
- except ValueError:
- if strict:
- raise
-
- except:
- strict
-
-
- None<EXCEPTION MATCH>ValueError
- if n.name == 'feature':
-
- try:
- self.feature = Feature(n)
- except ValueError:
- if strict:
- raise
-
- except:
- strict
-
-
- None<EXCEPTION MATCH>ValueError
- n = n.next
-
-
- def complete_xml_element(self, xmlnode, _unused):
- SI.complete_xml_element(self, xmlnode, _unused)
- None if self.file else None
- None if self.feature else None
-
-
- def __str__(self):
- n = self.as_xml(doc = common_doc)
- r = n.serialize()
- n.unlinkNode()
- n.freeNode()
- return r
-
-
-
- class File(StanzaPayloadObject):
- xml_element_name = 'file'
- xml_element_namespace = SI_FILETRANSFER_NS
-
- def __init__(self, xmlnode_or_name = None, size = None, hash = None, date = None, desc = None, length = None, offset = None):
- if isinstance(xmlnode_or_name, libxml2.xmlNode):
- self.from_xml(xmlnode_or_name)
- else:
- self.name = xmlnode_or_name
- self.size = size
- self.hash = hash
- self.date = date
- self.length = length
- self.desc = desc
- self.offset = offset
-
-
- def from_xml(self, node):
- if node.type != 'element':
- raise ValueError, 'XML node is not a file element (not en element)'
-
- ns = get_node_ns_uri(node)
- if ns or ns != SI_FILETRANSFER_NS or node.name != 'file':
- raise ValueError, 'XML node is not a file element'
-
- name = node.prop('name')
- self.name = None if name else None
- size = node.prop('size')
- self.size = None if size else None
- hash = node.prop('hash')
- date = node.prop('date')
- self.hash = None if hash else None
- self.date = None if date else None
- desc = None
- length = None
- offset = None
- n = node.children
- while n:
- if n.type != 'element':
- n = n.next
- continue
-
- ns = get_node_ns_uri(n)
- if ns and ns != SI_FILETRANSFER_NS:
- n = n.next
- continue
-
- if n.name == 'desc':
- desc = n.getContent()
- elif n.name == 'range':
- offset = n.prop('offset')
- length = n.prop('length')
-
- n = n.next
- self.desc = None if desc else None
- self.offset = None if offset else None
- self.length = None if length else None
-
-
- def complete_xml_element(self, xmlnode, _unused):
- None if self.name else None
- None if self.size else None
- None if self.hash else None
- if self.length or self.offset:
- range = xmlnode.newChild(None, 'range', None)
- None if self.length else None
- None if self.offset else None
-
- None if self.desc else None
-
-
- def __str__(self):
- n = self.as_xml(doc = common_doc)
- r = n.serialize()
- n.unlinkNode()
- n.freeNode()
- return r
-
-
-
- class Feature(StanzaPayloadObject):
- xml_element_name = 'feature'
- xml_element_namespace = FEATURE_NEG_NS
-
- def __init__(self, xmlnode = None, possible_streams = None, selected_stream = None):
- if isinstance(xmlnode, libxml2.xmlNode):
- self.from_xml(xmlnode)
- else:
- self.possible_streams = possible_streams
- self.selected_stream = selected_stream
-
-
- def from_xml(self, node):
- if node.type != 'element':
- raise ValueError, 'XML node is not a feature element (not en element)'
-
- ns = get_node_ns_uri(node)
- if ns or ns != FEATURE_NEG_NS or node.name != 'feature':
- raise ValueError, 'XML node is not a feature element'
-
- possible_streams = []
- self.selected_stream = None
- n = node.children
- while n:
- if n.type != 'element':
- n = n.next
- continue
-
- ns = get_node_ns_uri(n)
- if ns or ns != DATAFORM_NS or n.name != 'x':
- n = n.next
- continue
-
- form = dataforms.Form(n, strict = False)
- if not form.type:
- form.type = 'form'
-
-
- try:
- field = form['stream-method']
- except KeyError:
- n = n.next
- continue
-
- self.selected_stream = field.value
- possible_streams.extend(field.options)
- n = n.next
- if not [ v for o in possible_streams for v in o.values ]:
- pass
- self.possible_streams = None
-
-
- def complete_xml_element(self, xmlnode, _unused):
- f.as_xml(xmlnode, _unused)
-
-
- def __str__(self):
- n = self.as_xml(doc = common_doc)
- r = n.serialize()
- n.unlinkNode()
- n.freeNode()
- return r
-
-
-