Example #1
0
    def __init__(self,
                 xaddr,
                 user,
                 passwd,
                 url,
                 encrypt=True,
                 daemon=False,
                 zeep_client=None,
                 no_cache=False,
                 portType=None,
                 dt_diff=None,
                 binding_name='',
                 transport=None):
        if not os.path.isfile(url):
            raise ONVIFError('%s doesn`t exist!' % url)

        self.url = url
        self.xaddr = xaddr
        wsse = UsernameDigestTokenDtDiff(user,
                                         passwd,
                                         dt_diff=dt_diff,
                                         use_digest=encrypt)
        # Create soap client
        if not zeep_client:
            #print(self.url, self.xaddr)
            ClientType = Client if no_cache else CachingClient
            settings = Settings()
            settings.strict = False
            settings.xml_huge_tree = True
            self.zeep_client = ClientType(wsdl=url,
                                          wsse=wsse,
                                          transport=transport,
                                          settings=settings)
        else:
            self.zeep_client = zeep_client
        self.ws_client = self.zeep_client.create_service(
            binding_name, self.xaddr)

        # Set soap header for authentication
        self.user = user
        self.passwd = passwd
        # Indicate wether password digest is needed
        self.encrypt = encrypt
        self.daemon = daemon
        self.dt_diff = dt_diff
        self.create_type = lambda x: self.zeep_client.get_element('ns0:' + x)()
Example #2
0
 def setDatrasClient(self, url):
     """
     Creates a ICES/CIEM DATRAS WebServices client with the provided url.
     Parameters:
         url: string with the URL of the ICES/CIEM DATRAS WebService
     """
     try:
         # It seems that DATRAS web service doesn't support strict
         self.datras_client = Client(url, settings=Settings(strict=False))
     except:
         self.datras_client = None
Example #3
0
    def __init__(self, *args, **kwargs):
        super(IBabsBaseExtractor, self).__init__(*args, **kwargs)

        try:
            ibabs_wsdl = self.source_definition['wsdl']
        except Exception:
            ibabs_wsdl = settings.IBABS_WSDL

        soap_settings = Settings(
            strict=False,
            xml_huge_tree=True,
            xsd_ignore_sequence_order=True,
            extra_http_headers={'User-Agent': settings.USER_AGENT},
        )

        try:
            self.client = Client(ibabs_wsdl,
                                 port_name='BasicHttpsBinding_IPublic',
                                 settings=soap_settings)
        except Error as e:
            log.error('Unable to instantiate iBabs client: ' + str(e))
Example #4
0
    def __init__(self,
                 xaddr,
                 wsse: UsernameDigestTokenDtDiff,
                 url: Path,
                 *,
                 bindingName='',
                 transport=None):
        if not url.is_file():
            raise ONVIFError('%s doesn`t exist!' % url)

        self.url = url
        self.xaddr = xaddr

        if not transport:
            transport = AsyncTransport(None)
        self.client = Client(wsdl=str(url),
                             wsse=wsse,
                             transport=transport,
                             settings=Settings(strict=False,
                                               xml_huge_tree=True))
        self.wsClient = self.client.create_service(bindingName, xaddr)
        self.bindingName = bindingName
Example #5
0
@version 0.15.0 

@brief   Simple classes for Zeep-based OnVif service clients
"""
import sys
import os
import inspect
import datetime as dt
import lxml
import os

from zeep.client import Client, CachingClient, Settings
import zeep.helpers
from zeep.wsse.username import UsernameToken

settings = Settings()


def getWSDLPath(filename):
    lis = inspect.getabsfile(inspect.currentframe()).split("/")
    st = "/"
    for l in lis[:-1]:
        st = os.path.join(st, l)
    return os.path.join(st, "wsdl", filename)


class OnVif:
    """In subclasses, re-define class variables
    """
    namespace = None  # this is also your link to specifications
    wsdl_file = None  # local file