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)()
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
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))
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
@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