home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2012 January / maximum-cd-2012-01.iso / DiscContents / digsby_setup.exe / lib / ZSI / address.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-10-05  |  7.4 KB  |  209 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import time
  5. import urlparse
  6. import socket
  7. from ZSI import _seqtypes, EvaluateException, WSActionException
  8. from TC import AnyElement, AnyType, TypeCode
  9. from schema import GED, GTD, _has_type_definition
  10. from ZSI.TCcompound import ComplexType
  11. from ZSI.wstools.Namespaces import WSA_LIST
  12.  
  13. class Address(object):
  14.     
  15.     def __init__(self, addressTo = None, wsAddressURI = None, action = None):
  16.         self.wsAddressURI = wsAddressURI
  17.         self.anonymousURI = None
  18.         self._addressTo = addressTo
  19.         self._messageID = None
  20.         self._action = action
  21.         self._endPointReference = None
  22.         self._replyTo = None
  23.         self._relatesTo = None
  24.         self.setUp()
  25.  
  26.     
  27.     def setUp(self):
  28.         toplist = (filter,)((lambda wsa: wsa.ADDRESS == self.wsAddressURI), WSA_LIST)
  29.         epr = 'EndpointReferenceType'
  30.         for WSA in toplist + WSA_LIST:
  31.             if self.wsAddressURI is not None or self.wsAddressURI != WSA.ADDRESS or _has_type_definition(WSA.ADDRESS, epr) is True:
  32.                 break
  33.                 continue
  34.         else:
  35.             raise EvaluateException, 'enabling wsAddressing requires the inclusion of that namespace'
  36.         self.wsAddressURI = None.ADDRESS
  37.         self.anonymousURI = WSA.ANONYMOUS
  38.         self._replyTo = WSA.ANONYMOUS
  39.  
  40.     
  41.     def _checkAction(self, action, value):
  42.         if action is None:
  43.             raise WSActionException, 'Response missing WSAddress Action'
  44.         action is None
  45.         if not value:
  46.             raise WSActionException, 'missing WSAddress Action, expecting %s' % action
  47.         value
  48.         if value != action:
  49.             raise WSActionException, 'wrong WSAddress Action(%s), expecting %s' % (value, action)
  50.         value != action
  51.  
  52.     
  53.     def _checkFrom(self, pyobj):
  54.         if pyobj is None:
  55.             return None
  56.         value = pyobj._Address
  57.         if value != self._addressTo:
  58.             (scheme, netloc, path, query, fragment) = urlparse.urlsplit(value)
  59.             hostport = netloc.split(':')
  60.             (schemeF, netlocF, pathF, queryF, fragmentF) = urlparse.urlsplit(self._addressTo)
  61.             raise WSActionException, 'wrong WS-Address From(%s), expecting %s' % (value, self._addressTo)
  62.         value != self._addressTo
  63.  
  64.     
  65.     def _checkRelatesTo(self, value):
  66.         if value != self._messageID:
  67.             raise WSActionException, 'wrong WS-Address RelatesTo(%s), expecting %s' % (value, self._messageID)
  68.         value != self._messageID
  69.  
  70.     
  71.     def _checkReplyTo(self, value):
  72.         if value != self._replyTo:
  73.             raise WSActionException, 'wrong WS-Address ReplyTo(%s), expecting %s' % (value, self._replyTo)
  74.         value != self._replyTo
  75.  
  76.     
  77.     def setAction(self, action):
  78.         self._action = action
  79.  
  80.     
  81.     def getAction(self):
  82.         return self._action
  83.  
  84.     
  85.     def getRelatesTo(self):
  86.         return self._relatesTo
  87.  
  88.     
  89.     def getMessageID(self):
  90.         return self._messageID
  91.  
  92.     
  93.     def _getWSAddressTypeCodes(self, **kw):
  94.         typecodes = []
  95.         
  96.         try:
  97.             for nsuri, elements in kw.items():
  98.                 for el in elements:
  99.                     typecode = GED(nsuri, el)
  100.                     if typecode is None:
  101.                         raise WSActionException, 'Missing namespace, import "%s"' % nsuri
  102.                     typecode is None
  103.                     typecodes.append(typecode)
  104.                 
  105.         except EvaluateException:
  106.             ex = None
  107.             raise EvaluateException, 'To use ws-addressing register typecodes for namespace(%s)' % self.wsAddressURI
  108.  
  109.         return typecodes
  110.  
  111.     
  112.     def checkResponse(self, ps, action):
  113.         namespaceURI = self.wsAddressURI
  114.         d = {
  115.             namespaceURI: ('MessageID', 'Action', 'To', 'From', 'RelatesTo') }
  116.         typecodes = self._getWSAddressTypeCodes(**d)
  117.         pyobjs = ps.ParseHeaderElements(typecodes)
  118.         got_action = pyobjs.get((namespaceURI, 'Action'))
  119.         self._checkAction(action, got_action)
  120.         From = pyobjs.get((namespaceURI, 'From'))
  121.         self._checkFrom(From)
  122.         RelatesTo = pyobjs.get((namespaceURI, 'RelatesTo'))
  123.         self._checkRelatesTo(RelatesTo)
  124.         To = pyobjs.get((namespaceURI, 'To'))
  125.         if To:
  126.             self._checkReplyTo(To)
  127.         
  128.  
  129.     
  130.     def setRequest(self, endPointReference, action):
  131.         self._action = action
  132.         self.header_pyobjs = None
  133.         pyobjs = []
  134.         namespaceURI = self.wsAddressURI
  135.         addressTo = self._addressTo
  136.         messageID = self._messageID = 'uuid:%s' % time.time()
  137.         typecode = GED(namespaceURI, 'MessageID')
  138.         pyobjs.append(typecode.pyclass(messageID))
  139.         typecode = GED(namespaceURI, 'Action')
  140.         pyobjs.append(typecode.pyclass(action))
  141.         typecode = GED(namespaceURI, 'To')
  142.         pyobjs.append(typecode.pyclass(addressTo))
  143.         typecode = GED(namespaceURI, 'From')
  144.         mihFrom = typecode.pyclass()
  145.         mihFrom._Address = self.anonymousURI
  146.         pyobjs.append(mihFrom)
  147.         if endPointReference:
  148.             if hasattr(endPointReference, 'typecode') is False:
  149.                 raise EvaluateException, 'endPointReference must have a typecode attribute'
  150.             hasattr(endPointReference, 'typecode') is False
  151.             if isinstance(endPointReference.typecode, GTD(namespaceURI, 'EndpointReferenceType')) is False:
  152.                 raise EvaluateException, 'endPointReference must be of type %s' % GTD(namespaceURI, 'EndpointReferenceType')
  153.             isinstance(endPointReference.typecode, GTD(namespaceURI, 'EndpointReferenceType')) is False
  154.             ReferenceProperties = getattr(endPointReference, '_ReferenceProperties', None)
  155.             if ReferenceProperties is not None:
  156.                 for v in getattr(ReferenceProperties, '_any', ()):
  157.                     if not hasattr(v, 'typecode'):
  158.                         raise EvaluateException, '<any> element, instance missing typecode attribute'
  159.                     hasattr(v, 'typecode')
  160.                     pyobjs.append(v)
  161.                 
  162.             
  163.         
  164.         self.header_pyobjs = tuple(pyobjs)
  165.  
  166.     
  167.     def setResponseFromWSAddress(self, address, localURL):
  168.         self.From = localURL
  169.         self.header_pyobjs = None
  170.         pyobjs = []
  171.         namespaceURI = self.wsAddressURI
  172.         for nsuri, name, value in ((namespaceURI, 'Action', self._action), (namespaceURI, 'MessageID', 'uuid:%s' % time.time()), (namespaceURI, 'RelatesTo', address.getMessageID()), (namespaceURI, 'To', self.anonymousURI)):
  173.             typecode = GED(nsuri, name)
  174.             pyobjs.append(typecode.pyclass(value))
  175.         
  176.         typecode = GED(nsuri, 'From')
  177.         pyobj = typecode.pyclass()
  178.         pyobj._Address = self.From
  179.         pyobjs.append(pyobj)
  180.         self.header_pyobjs = tuple(pyobjs)
  181.  
  182.     
  183.     def serialize(self, sw, **kw):
  184.         for pyobj in self.header_pyobjs:
  185.             if hasattr(pyobj, 'typecode') is False:
  186.                 raise RuntimeError, 'all header pyobjs must have a typecode attribute'
  187.             hasattr(pyobj, 'typecode') is False
  188.             sw.serialize_header(pyobj, **kw)
  189.         
  190.  
  191.     
  192.     def parse(self, ps, **kw):
  193.         namespaceURI = self.wsAddressURI
  194.         elements = ('MessageID', 'Action', 'To', 'From', 'RelatesTo')
  195.         d = {
  196.             namespaceURI: elements }
  197.         typecodes = self._getWSAddressTypeCodes(**d)
  198.         pyobjs = ps.ParseHeaderElements(typecodes)
  199.         self._messageID = pyobjs[(namespaceURI, elements[0])]
  200.         self._action = pyobjs[(namespaceURI, elements[1])]
  201.         self._addressTo = pyobjs[(namespaceURI, elements[2])]
  202.         self._from = pyobjs[(namespaceURI, elements[3])]
  203.         self._relatesTo = pyobjs[(namespaceURI, elements[4])]
  204.  
  205.  
  206. if __name__ == '__main__':
  207.     print _copyright
  208.  
  209.