コード例 #1
0
    def __init__(self, username, password, source='', wsdl_url=None, **kwargs):
        if not wsdl_url:
            wsdl_url = docmail.client.DOCMAIL_WSDL
        self.source = source
        self.username = username
        self.password = password

        self.return_format = 'XML'
        self.failure_return_format = 'XML'

        options = Options()
        options.transport = HttpAuthenticated()
        self.options = options
        options.cache = MemCache()
        self.set_options(**kwargs)
        reader = DefinitionsReader(options, Definitions)
        self.wsdl = reader.open(wsdl_url)
        plugins = PluginContainer(options.plugins)
        plugins.init.initialized(wsdl=self.wsdl)
        self.factory = Factory(self.wsdl)
        self.service = ServiceSelector(self, self.wsdl.services)
        self.sd = []
        for s in self.wsdl.services:
            sd = ServiceDefinition(self.wsdl, s)
            self.sd.append(sd)
        self.messages = dict(tx=None, rx=None)
コード例 #2
0
ファイル: client.py プロジェクト: Bemmu/docmail-api-wrapper
    def __init__(self, username, password, source='', wsdl_url=None, **kwargs):
        if not wsdl_url:
            wsdl_url = docmail.client.DOCMAIL_WSDL
        self.source = source
        self.username = username
        self.password = password
        
        self.return_format = 'XML'           
        self.failure_return_format = 'XML'


        options = Options()
        options.transport = HttpAuthenticated()
        self.options = options
        options.cache = MemCache()
        self.set_options(**kwargs)
        reader = DefinitionsReader(options, Definitions)
        self.wsdl = reader.open(wsdl_url)
        plugins = PluginContainer(options.plugins)
        plugins.init.initialized(wsdl=self.wsdl)
        self.factory = Factory(self.wsdl)
        self.service = ServiceSelector(self, self.wsdl.services)
        self.sd = []
        for s in self.wsdl.services:
            sd = ServiceDefinition(self.wsdl, s)
            self.sd.append(sd)
        self.messages = dict(tx=None, rx=None)
コード例 #3
0
ファイル: suds_memcache.py プロジェクト: nathan-gs/clapp
    def __init__(self, url, **kwargs):
        options = Options()
        options.transport = HttpAuthenticated()
        self.options = options
        options.cache = MemCache()
        self.set_options(**kwargs)
        reader = DefinitionsReader(options, Definitions)
        self.wsdl = reader.open(url)
        # uncomment this for 0.4+
#        plugins = PluginContainer(options.plugins)
#        plugins.init.initialized(wsdl=self.wsdl)
        self.factory = Factory(self.wsdl)
        self.service = ServiceSelector(self, self.wsdl.services)
        self.sd = []
        for s in self.wsdl.services:
            sd = ServiceDefinition(self.wsdl, s)
            self.sd.append(sd)
        self.messages = dict(tx=None, rx=None)
コード例 #4
0
 def __init__(self, options=None):
     """
     @param options: A suds options object.
     @type options: L{suds.options.Options}
     """
     if options is None:
         from suds.options import Options
         self.options = Options()
         del Options
     else:
         self.options = options
コード例 #5
0
ファイル: client.py プロジェクト: jonathan-hepp/suds
 def __init__(self, url, **kwargs):
     """
     @param url: The URL for the WSDL.
     @type url: str
     @param kwargs: keyword arguments.
     @see: L{Options}
     """
     options = Options()
     options.transport = HttpAuthenticated()
     self.options = options
     options.cache = ObjectCache(days=1)
     self.set_options(**kwargs)
     reader = DefinitionsReader(options, Definitions)
     self.wsdl = reader.open(url)
     plugins = PluginContainer(options.plugins)
     plugins.init.initialized(wsdl=self.wsdl)
     self.factory = Factory(self.wsdl)
     self.service = ServiceSelector(self, self.wsdl.services)
     self.sd = []
     for s in self.wsdl.services:
         sd = ServiceDefinition(self.wsdl, s)
         self.sd.append(sd)
     self.messages = dict(tx=None, rx=None)
コード例 #6
0
ファイル: wspolicy.py プロジェクト: analytehealth/suds
    def buildOptions(self):
        options = Options()
        options.wsse.enabled = self.wsseEnabled
        if self.wsseEnabled:
            options.wsse.includeTimestamp = self.includeTimestamp
            options.wsse.encryptThenSign = self.encryptThenSign
            options.wsse.signOnlyEntireHeadersAndBody = self.onlySignEntireHeadersAndBody
            if self.wsse11 is not None:
                options.wsse.wsse11 = self.wsse11 
            if self.headerLayout is not None:
                options.wsse.headerLayout = self.headerLayout

            def create_signed_header_ns_func(ns):
                return lambda env, sig: filter(lambda header: header.namespace()[1] == ns, env.getChild("Header").getChildren())
                    
            def create_signed_header_func(ns, name):
                return lambda env, sig: env.getChild("Header").getChildren(name, ns=(None, ns))
                    
            def create_encrypted_header_ns_func(ns, name):
                return lambda env: [(hdr, 'Element') for hdr in filter(lambda header: header.namespace()[1] == ns, env.getChild("Header").getChildren())]

            def create_encrypted_header_func(ns, name):
                return lambda env: (env.getChild("Header").getChildren(name, ns=(None, ns)), 'Element')

            def create_signed_username_token_func(index):
                return lambda env, sig: env.getChild("Header").getChild("Security").getChildren("UsernameToken")[index]

            def create_signed_binary_token_func(index):
                return lambda env, sig: env.getChild("Header").getChild("Security").getChildren("BinarySecurityToken")[index]

            def create_encrypted_username_token_func(index):
                return lambda env: (env.getChild("Header").getChild("Security").getChildren("UsernameToken")[index], 'Element')

            def create_encrypted_binary_token_func(index):
                return lambda env: (env.getChild("Header").getChild("Security").getChildren("BinarySecurityToken")[index], 'Element')

            index = 0
            for sig in self.signatures:
                if self.digestAlgorithm is not None:
                    options.wsse.signatures[index].digest = self.digestAlgorithm
                if sig.keyReference is not None:
                    options.wsse.signatures[index].keyreference = sig.keyReference
                if sig.signatureAlgorithm is not None:
                    options.wsse.signatures[index].signaturealgorithm = sig.signatureAlgorithm

                signed_parts = []
                for part in sig.signedParts:
                    if part[0] == 'body':
                        signed_parts.append(lambda env, sig: env.getChild("Body"))
                    elif part[0] == 'header':
                        if part[2] is None:
                            signed_parts.append(create_signed_header_ns_func(part[1]))
                        else:
                            signed_parts.append(create_signed_header_func(part[1], part[2]))
                    elif part[0] == 'timestamp':
                        signed_parts.append(lambda env, sig: env.childAtPath("Header/Security/Timestamp"))
                    elif part[0] == 'primary_signature':
                        signed_parts.append(lambda env, sig: sig.primary_sig)
                    elif part[0] == 'token':
                        if part[1] == 'self':
                            signed_parts.append(lambda env, sig: sig.token)
                        elif part[1] == 'token':
                            signed_parts.append(create_signed_username_token_func(part[2]))
                        elif part[1] == 'signature':
                            signed_parts.append(create_signed_binary_token_func(part[2]))
                
                options.wsse.signatures[index].signedparts = signed_parts

                index = index + 1

            index = 0
            for key in self.keys:
                if self.blockEncryption is not None:
                    options.wsse.keys[index].blockencryption = self.blockEncryption
                if self.keyTransport is not None:
                    options.wsse.keys[index].keytransport = self.keyTransport
                if key.keyReference is not None:
                    options.wsse.keys[index].keyreference = key.keyReference
                options.wsse.keys[index].includereflist = key.includeRefList

                encrypted_parts = []
                for part in key.encryptedParts:
                    if part[0] == 'body':
                        encrypted_parts.append(lambda env: (env.getChild("Body"), "Content"))
                    elif part[0] == 'header':
                        if part[2] is None:
                            encrypted_parts.append(create_encrypted_header_ns_func(part[1]))
                        else:
                            encrypted_parts.append(create_encrypted_header_func(part[1], part[2]))
                    elif part[0] == 'signature':
                        encrypted_parts.append(lambda env: (env.getChild('Header').getChild('Security').getChild('Signature'), 'Element'))
                    elif part[0] == 'token':
                        if part[1] == 'token':
                            encrypted_parts.append(create_encrypted_username_token_func(part[2]))
                        elif part[1] == 'signature':
                            encrypted_parts.append(create_encrypted_binary_token_func(part[2]))

                options.wsse.keys[index].encryptedparts = encrypted_parts

                second_pass_encrypted_parts = []
                for part in key.secondPassEncryptedParts:
                    if part[0] == 'body':
                        second_pass_encrypted_parts.append(lambda env: (env.getChild("Body"), "Content"))
                    elif part[0] == 'header':
                        second_pass_encrypted_parts.append(create_encrypted_header_func(part[1], part[2]))
                    elif part[0] == 'signature':
                        second_pass_encrypted_parts.append(lambda env: (env.getChild('Header').getChild('Security').getChild('Signature'), 'Element'))

                options.wsse.keys[index].secondpassencryptedparts = second_pass_encrypted_parts

                index = index + 1

        if self.addressing is not None:
            options.wsaddr = self.addressing
        if self.clientCertRequired:
            options.transport.protocol = PROTOCOL_HTTPS_CERT_AUTH
        return options
コード例 #7
0
ファイル: test_reader.py プロジェクト: ByReaL/suds
 def setUp(self):
     import os
     os.environ['PYTHONHASHSEED'] = '100'
     options = Options()
     self.r = Reader(options)
コード例 #8
0
ファイル: wspolicy.py プロジェクト: analytehealth/suds
    def buildOptions(self):
        options = Options()
        options.wsse.enabled = self.wsseEnabled
        if self.wsseEnabled:
            options.wsse.includeTimestamp = self.includeTimestamp
            options.wsse.encryptThenSign = self.encryptThenSign
            options.wsse.signOnlyEntireHeadersAndBody = self.onlySignEntireHeadersAndBody
            if self.wsse11 is not None:
                options.wsse.wsse11 = self.wsse11
            if self.headerLayout is not None:
                options.wsse.headerLayout = self.headerLayout

            def create_signed_header_ns_func(ns):
                return lambda env, sig: filter(
                    lambda header: header.namespace()[1] == ns,
                    env.getChild("Header").getChildren())

            def create_signed_header_func(ns, name):
                return lambda env, sig: env.getChild("Header").getChildren(
                    name, ns=(None, ns))

            def create_encrypted_header_ns_func(ns, name):
                return lambda env: [(hdr, 'Element') for hdr in filter(
                    lambda header: header.namespace()[1] == ns,
                    env.getChild("Header").getChildren())]

            def create_encrypted_header_func(ns, name):
                return lambda env: (env.getChild("Header").getChildren(
                    name, ns=(None, ns)), 'Element')

            def create_signed_username_token_func(index):
                return lambda env, sig: env.getChild("Header").getChild(
                    "Security").getChildren("UsernameToken")[index]

            def create_signed_binary_token_func(index):
                return lambda env, sig: env.getChild("Header").getChild(
                    "Security").getChildren("BinarySecurityToken")[index]

            def create_encrypted_username_token_func(index):
                return lambda env: (env.getChild("Header").getChild(
                    "Security").getChildren("UsernameToken")[index], 'Element')

            def create_encrypted_binary_token_func(index):
                return lambda env: (env.getChild("Header").getChild(
                    "Security").getChildren("BinarySecurityToken")[index],
                                    'Element')

            index = 0
            for sig in self.signatures:
                if self.digestAlgorithm is not None:
                    options.wsse.signatures[
                        index].digest = self.digestAlgorithm
                if sig.keyReference is not None:
                    options.wsse.signatures[
                        index].keyreference = sig.keyReference
                if sig.signatureAlgorithm is not None:
                    options.wsse.signatures[
                        index].signaturealgorithm = sig.signatureAlgorithm

                signed_parts = []
                for part in sig.signedParts:
                    if part[0] == 'body':
                        signed_parts.append(
                            lambda env, sig: env.getChild("Body"))
                    elif part[0] == 'header':
                        if part[2] is None:
                            signed_parts.append(
                                create_signed_header_ns_func(part[1]))
                        else:
                            signed_parts.append(
                                create_signed_header_func(part[1], part[2]))
                    elif part[0] == 'timestamp':
                        signed_parts.append(lambda env, sig: env.childAtPath(
                            "Header/Security/Timestamp"))
                    elif part[0] == 'primary_signature':
                        signed_parts.append(lambda env, sig: sig.primary_sig)
                    elif part[0] == 'token':
                        if part[1] == 'self':
                            signed_parts.append(lambda env, sig: sig.token)
                        elif part[1] == 'token':
                            signed_parts.append(
                                create_signed_username_token_func(part[2]))
                        elif part[1] == 'signature':
                            signed_parts.append(
                                create_signed_binary_token_func(part[2]))

                options.wsse.signatures[index].signedparts = signed_parts

                index = index + 1

            index = 0
            for key in self.keys:
                if self.blockEncryption is not None:
                    options.wsse.keys[
                        index].blockencryption = self.blockEncryption
                if self.keyTransport is not None:
                    options.wsse.keys[index].keytransport = self.keyTransport
                if key.keyReference is not None:
                    options.wsse.keys[index].keyreference = key.keyReference
                options.wsse.keys[index].includereflist = key.includeRefList

                encrypted_parts = []
                for part in key.encryptedParts:
                    if part[0] == 'body':
                        encrypted_parts.append(
                            lambda env: (env.getChild("Body"), "Content"))
                    elif part[0] == 'header':
                        if part[2] is None:
                            encrypted_parts.append(
                                create_encrypted_header_ns_func(part[1]))
                        else:
                            encrypted_parts.append(
                                create_encrypted_header_func(part[1], part[2]))
                    elif part[0] == 'signature':
                        encrypted_parts.append(
                            lambda env: (env.getChild('Header').getChild(
                                'Security').getChild('Signature'), 'Element'))
                    elif part[0] == 'token':
                        if part[1] == 'token':
                            encrypted_parts.append(
                                create_encrypted_username_token_func(part[2]))
                        elif part[1] == 'signature':
                            encrypted_parts.append(
                                create_encrypted_binary_token_func(part[2]))

                options.wsse.keys[index].encryptedparts = encrypted_parts

                second_pass_encrypted_parts = []
                for part in key.secondPassEncryptedParts:
                    if part[0] == 'body':
                        second_pass_encrypted_parts.append(
                            lambda env: (env.getChild("Body"), "Content"))
                    elif part[0] == 'header':
                        second_pass_encrypted_parts.append(
                            create_encrypted_header_func(part[1], part[2]))
                    elif part[0] == 'signature':
                        second_pass_encrypted_parts.append(
                            lambda env: (env.getChild('Header').getChild(
                                'Security').getChild('Signature'), 'Element'))

                options.wsse.keys[
                    index].secondpassencryptedparts = second_pass_encrypted_parts

                index = index + 1

        if self.addressing is not None:
            options.wsaddr = self.addressing
        if self.clientCertRequired:
            options.transport.protocol = PROTOCOL_HTTPS_CERT_AUTH
        return options
    def __init__(self, key, cert, options = Options()):

        HttpTransport.__init__(self)

        self.urlopener = urllib2.build_opener(HTTPSClientAuthHandler(key, cert))
コード例 #10
0
 def mangle(url, typ):
     return Reader(Options()).mangle(url, typ)
コード例 #11
0
 def test_getf_mangled(self):
     mangled = Reader(Options()).mangle(self.url, 'document')
     self.getf(mangled)
コード例 #12
0
def clear_suds_cache(wsdl):
    for type in ("wsdl", "document"):
        cacheId = Reader(Options()).mangle(wsdl, type)
        DocumentCache().purge(cacheId)
        ObjectCache().purge(cacheId)
        FileCache().purge(cacheId)