home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyo (Python 2.6)
-
- import time
- import urlparse
- import socket
- from ZSI import _seqtypes, EvaluateException, WSActionException
- from TC import AnyElement, AnyType, TypeCode
- from schema import GED, GTD, _has_type_definition
- from ZSI.TCcompound import ComplexType
- from ZSI.wstools.Namespaces import WSA_LIST
-
- class Address(object):
-
- def __init__(self, addressTo = None, wsAddressURI = None, action = None):
- self.wsAddressURI = wsAddressURI
- self.anonymousURI = None
- self._addressTo = addressTo
- self._messageID = None
- self._action = action
- self._endPointReference = None
- self._replyTo = None
- self._relatesTo = None
- self.setUp()
-
-
- def setUp(self):
- toplist = (filter,)((lambda wsa: wsa.ADDRESS == self.wsAddressURI), WSA_LIST)
- epr = 'EndpointReferenceType'
- for WSA in toplist + WSA_LIST:
- if self.wsAddressURI is not None or self.wsAddressURI != WSA.ADDRESS or _has_type_definition(WSA.ADDRESS, epr) is True:
- break
- continue
- else:
- raise EvaluateException, 'enabling wsAddressing requires the inclusion of that namespace'
- self.wsAddressURI = None.ADDRESS
- self.anonymousURI = WSA.ANONYMOUS
- self._replyTo = WSA.ANONYMOUS
-
-
- def _checkAction(self, action, value):
- if action is None:
- raise WSActionException, 'Response missing WSAddress Action'
- action is None
- if not value:
- raise WSActionException, 'missing WSAddress Action, expecting %s' % action
- value
- if value != action:
- raise WSActionException, 'wrong WSAddress Action(%s), expecting %s' % (value, action)
- value != action
-
-
- def _checkFrom(self, pyobj):
- if pyobj is None:
- return None
- value = pyobj._Address
- if value != self._addressTo:
- (scheme, netloc, path, query, fragment) = urlparse.urlsplit(value)
- hostport = netloc.split(':')
- (schemeF, netlocF, pathF, queryF, fragmentF) = urlparse.urlsplit(self._addressTo)
- raise WSActionException, 'wrong WS-Address From(%s), expecting %s' % (value, self._addressTo)
- value != self._addressTo
-
-
- def _checkRelatesTo(self, value):
- if value != self._messageID:
- raise WSActionException, 'wrong WS-Address RelatesTo(%s), expecting %s' % (value, self._messageID)
- value != self._messageID
-
-
- def _checkReplyTo(self, value):
- if value != self._replyTo:
- raise WSActionException, 'wrong WS-Address ReplyTo(%s), expecting %s' % (value, self._replyTo)
- value != self._replyTo
-
-
- def setAction(self, action):
- self._action = action
-
-
- def getAction(self):
- return self._action
-
-
- def getRelatesTo(self):
- return self._relatesTo
-
-
- def getMessageID(self):
- return self._messageID
-
-
- def _getWSAddressTypeCodes(self, **kw):
- typecodes = []
-
- try:
- for nsuri, elements in kw.items():
- for el in elements:
- typecode = GED(nsuri, el)
- if typecode is None:
- raise WSActionException, 'Missing namespace, import "%s"' % nsuri
- typecode is None
- typecodes.append(typecode)
-
- except EvaluateException:
- ex = None
- raise EvaluateException, 'To use ws-addressing register typecodes for namespace(%s)' % self.wsAddressURI
-
- return typecodes
-
-
- def checkResponse(self, ps, action):
- namespaceURI = self.wsAddressURI
- d = {
- namespaceURI: ('MessageID', 'Action', 'To', 'From', 'RelatesTo') }
- typecodes = self._getWSAddressTypeCodes(**d)
- pyobjs = ps.ParseHeaderElements(typecodes)
- got_action = pyobjs.get((namespaceURI, 'Action'))
- self._checkAction(action, got_action)
- From = pyobjs.get((namespaceURI, 'From'))
- self._checkFrom(From)
- RelatesTo = pyobjs.get((namespaceURI, 'RelatesTo'))
- self._checkRelatesTo(RelatesTo)
- To = pyobjs.get((namespaceURI, 'To'))
- if To:
- self._checkReplyTo(To)
-
-
-
- def setRequest(self, endPointReference, action):
- self._action = action
- self.header_pyobjs = None
- pyobjs = []
- namespaceURI = self.wsAddressURI
- addressTo = self._addressTo
- messageID = self._messageID = 'uuid:%s' % time.time()
- typecode = GED(namespaceURI, 'MessageID')
- pyobjs.append(typecode.pyclass(messageID))
- typecode = GED(namespaceURI, 'Action')
- pyobjs.append(typecode.pyclass(action))
- typecode = GED(namespaceURI, 'To')
- pyobjs.append(typecode.pyclass(addressTo))
- typecode = GED(namespaceURI, 'From')
- mihFrom = typecode.pyclass()
- mihFrom._Address = self.anonymousURI
- pyobjs.append(mihFrom)
- if endPointReference:
- if hasattr(endPointReference, 'typecode') is False:
- raise EvaluateException, 'endPointReference must have a typecode attribute'
- hasattr(endPointReference, 'typecode') is False
- if isinstance(endPointReference.typecode, GTD(namespaceURI, 'EndpointReferenceType')) is False:
- raise EvaluateException, 'endPointReference must be of type %s' % GTD(namespaceURI, 'EndpointReferenceType')
- isinstance(endPointReference.typecode, GTD(namespaceURI, 'EndpointReferenceType')) is False
- ReferenceProperties = getattr(endPointReference, '_ReferenceProperties', None)
- if ReferenceProperties is not None:
- for v in getattr(ReferenceProperties, '_any', ()):
- if not hasattr(v, 'typecode'):
- raise EvaluateException, '<any> element, instance missing typecode attribute'
- hasattr(v, 'typecode')
- pyobjs.append(v)
-
-
-
- self.header_pyobjs = tuple(pyobjs)
-
-
- def setResponseFromWSAddress(self, address, localURL):
- self.From = localURL
- self.header_pyobjs = None
- pyobjs = []
- namespaceURI = self.wsAddressURI
- for nsuri, name, value in ((namespaceURI, 'Action', self._action), (namespaceURI, 'MessageID', 'uuid:%s' % time.time()), (namespaceURI, 'RelatesTo', address.getMessageID()), (namespaceURI, 'To', self.anonymousURI)):
- typecode = GED(nsuri, name)
- pyobjs.append(typecode.pyclass(value))
-
- typecode = GED(nsuri, 'From')
- pyobj = typecode.pyclass()
- pyobj._Address = self.From
- pyobjs.append(pyobj)
- self.header_pyobjs = tuple(pyobjs)
-
-
- def serialize(self, sw, **kw):
- for pyobj in self.header_pyobjs:
- if hasattr(pyobj, 'typecode') is False:
- raise RuntimeError, 'all header pyobjs must have a typecode attribute'
- hasattr(pyobj, 'typecode') is False
- sw.serialize_header(pyobj, **kw)
-
-
-
- def parse(self, ps, **kw):
- namespaceURI = self.wsAddressURI
- elements = ('MessageID', 'Action', 'To', 'From', 'RelatesTo')
- d = {
- namespaceURI: elements }
- typecodes = self._getWSAddressTypeCodes(**d)
- pyobjs = ps.ParseHeaderElements(typecodes)
- self._messageID = pyobjs[(namespaceURI, elements[0])]
- self._action = pyobjs[(namespaceURI, elements[1])]
- self._addressTo = pyobjs[(namespaceURI, elements[2])]
- self._from = pyobjs[(namespaceURI, elements[3])]
- self._relatesTo = pyobjs[(namespaceURI, elements[4])]
-
-
- if __name__ == '__main__':
- print _copyright
-
-