1414from requests .exceptions import HTTPError
1515import urllib3
1616from copy import copy
17+ from typing import Optional
1718
1819try :
1920 from json import JSONEncoder
@@ -29,23 +30,27 @@ class ChannelFinderClient(object):
2930 __propertiesResource = "/resources/properties"
3031 __tagsResource = "/resources/tags"
3132
32- def __init__ (self , BaseURL = None , username = None , password = None , verify_ssl = True ):
33+ def __init__ (self , BaseURL = None , username = None , password = None , verify_ssl = None ):
3334 """
3435 Channel finder client object. It provides a connection object to perform the following operations:
3536 - find: find all channels satisfying given searching criteria
3637 - set: add channel into service
3738 - update: update channel information
3839 - delete: delete channel from service
3940
41+ If any of the arguments is ``None``, the respective value from the
42+ configuration file is used.
43+
4044 :param BaseURL: the url of the channel finder service
4145 :param username: user name authorized by channel finder service
4246 :param password: password for the authorized user
47+ :param verify_ssl: verify the peer TLS certificate
4348 """
4449 try :
4550 self .__baseURL = self .__getDefaultConfig ("BaseURL" , BaseURL )
4651 self .__userName = self .__getDefaultConfig ("username" , username )
4752 self .__password = self .__getDefaultConfig ("password" , password )
48- self .__verify_ssl = self .__getDefaultConfig ("verify_ssl" , verify_ssl )
53+ self .__verify_ssl = self ._get_boolean_config ("verify_ssl" , verify_ssl )
4954 if self .__userName and self .__password :
5055 self .__auth = auth .HTTPBasicAuth (self .__userName , self .__password )
5156 else :
@@ -58,19 +63,34 @@ def __init__(self, BaseURL=None, username=None, password=None, verify_ssl=True):
5863 except Exception as e :
5964 raise RuntimeError ("Error creating ChannelFinderClient: " + str (e ))
6065
61- def __getDefaultConfig (self , key , ref ):
66+ def __getDefaultConfig (self , key , override ):
6267 """
6368 Get default configuration for given name and section.
6469
6570 :param key: key word
66- :param ref: reference value
67- :return: result if key word is configured or ref is not None, otherwise None
71+ :param override: override value
72+ :return: ``override`` if not ``None``, else the configuration value
73+ associated with ``key`` if present, otherwise ``None``.
6874 """
69- result = ref
70- if ref is None :
75+ result = override
76+ if override is None :
7177 result = basecfg ["DEFAULT" ].get (key , None )
7278 return result
7379
80+ def _get_boolean_config (self , key : str , override : Optional [bool ]) -> bool :
81+ """
82+ Get boolean configuration for given name and section.
83+
84+ :param key: key word
85+ :param override: override value
86+ :return: ``override`` if not ``None``, else the configuration value
87+ associated with ``key`` if present, otherwise ``None``.
88+ """
89+ result = override
90+ if override is None :
91+ result = basecfg ["DEFAULT" ].getboolean (key , None )
92+ return bool (result )
93+
7494 def set (self , ** kwds ):
7595 """
7696 method to allow various types of set operations on one or many channels, tags or properties
@@ -161,7 +181,6 @@ def __handleSingleAddParameter(self, **kwds):
161181 + kwds ["channel" ]["name" ],
162182 data = JSONEncoder ().encode (kwds ["channel" ]),
163183 headers = copy (self .__jsonheader ),
164- verify = False ,
165184 auth = self .__auth ,
166185 )
167186 r .raise_for_status ()
@@ -170,7 +189,6 @@ def __handleSingleAddParameter(self, **kwds):
170189 self .__baseURL + self .__channelsResource ,
171190 data = JSONEncoder ().encode (kwds ["channels" ]),
172191 headers = copy (self .__jsonheader ),
173- verify = False ,
174192 auth = self .__auth ,
175193 )
176194 r .raise_for_status ()
@@ -179,7 +197,6 @@ def __handleSingleAddParameter(self, **kwds):
179197 self .__baseURL + self .__tagsResource + "/" + kwds ["tag" ]["name" ],
180198 data = JSONEncoder ().encode (kwds ["tag" ]),
181199 headers = copy (self .__jsonheader ),
182- verify = False ,
183200 auth = self .__auth ,
184201 )
185202 r .raise_for_status ()
@@ -189,7 +206,6 @@ def __handleSingleAddParameter(self, **kwds):
189206 self .__baseURL + self .__tagsResource ,
190207 data = data ,
191208 headers = copy (self .__jsonheader ),
192- verify = False ,
193209 auth = self .__auth ,
194210 )
195211 r .raise_for_status ()
@@ -201,7 +217,6 @@ def __handleSingleAddParameter(self, **kwds):
201217 + kwds ["property" ]["name" ],
202218 data = JSONEncoder ().encode (kwds ["property" ]),
203219 headers = copy (self .__jsonheader ),
204- verify = False ,
205220 auth = self .__auth ,
206221 )
207222 r .raise_for_status ()
@@ -212,7 +227,6 @@ def __handleSingleAddParameter(self, **kwds):
212227 self .__baseURL + self .__propertiesResource ,
213228 data = data ,
214229 headers = copy (self .__jsonheader ),
215- verify = False ,
216230 auth = self .__auth ,
217231 )
218232 r .raise_for_status ()
@@ -238,7 +252,6 @@ def __handleMultipleAddParameters(self, **kwds):
238252 self .__baseURL + self .__tagsResource + "/" + kwds ["tag" ]["name" ],
239253 data = JSONEncoder ().encode (data ),
240254 headers = copy (self .__jsonheader ),
241- verify = False ,
242255 auth = self .__auth ,
243256 ).raise_for_status ()
244257 elif "tag" in kwds and "channelNames" in kwds :
@@ -251,7 +264,6 @@ def __handleMultipleAddParameters(self, **kwds):
251264 self .__baseURL + self .__tagsResource + "/" + kwds ["tag" ]["name" ],
252265 data = JSONEncoder ().encode (data ),
253266 headers = copy (self .__jsonheader ),
254- verify = False ,
255267 auth = self .__auth ,
256268 ).raise_for_status ()
257269 elif "property" in kwds and "channels" in kwds :
@@ -264,7 +276,6 @@ def __handleMultipleAddParameters(self, **kwds):
264276 + kwds ["property" ]["name" ],
265277 data = JSONEncoder ().encode (data ),
266278 headers = copy (self .__jsonheader ),
267- verify = False ,
268279 auth = self .__auth ,
269280 ).raise_for_status ()
270281 else :
@@ -365,7 +376,6 @@ def findByArgs(self, args):
365376 url ,
366377 params = args ,
367378 headers = copy (self .__jsonheader ),
368- verify = False ,
369379 auth = self .__auth ,
370380 )
371381 try :
@@ -385,9 +395,7 @@ def findTag(self, tagname):
385395 :return: Tag object if found, otherwise None
386396 """
387397 url = self .__baseURL + self .__tagsResource + "/" + tagname
388- r = self .__session .get (
389- url , headers = copy (self .__jsonheader ), verify = False , auth = self .__auth
390- )
398+ r = self .__session .get (url , headers = copy (self .__jsonheader ), auth = self .__auth )
391399 try :
392400 r .raise_for_status ()
393401 return r .json ()
@@ -405,7 +413,7 @@ def findProperty(self, propertyname):
405413 :return: Property object if found, otherwise None
406414 """
407415 url = self .__baseURL + self .__propertiesResource + "/" + propertyname
408- r = self .__session .get (url , headers = copy (self .__jsonheader ), verify = False )
416+ r = self .__session .get (url , headers = copy (self .__jsonheader ))
409417 try :
410418 r .raise_for_status ()
411419 return r .json ()
@@ -422,7 +430,7 @@ def getAllTags(self):
422430 :return: list of all the Tag objects present, otherwise None.
423431 """
424432 url = self .__baseURL + self .__tagsResource
425- r = self .__session .get (url , headers = copy (self .__jsonheader ), verify = False )
433+ r = self .__session .get (url , headers = copy (self .__jsonheader ))
426434 try :
427435 r .raise_for_status ()
428436 return r .json ()
@@ -439,7 +447,7 @@ def getAllProperties(self):
439447 :return: list of the Property objects present, otherwise None
440448 """
441449 url = self .__baseURL + self .__propertiesResource
442- r = self .__session .get (url , headers = copy (self .__jsonheader ), verify = False )
450+ r = self .__session .get (url , headers = copy (self .__jsonheader ))
443451 try :
444452 r .raise_for_status ()
445453 return r .json ()
@@ -504,12 +512,12 @@ def __handleSingleDeleteParameter(self, **kwds):
504512 + kwds ["channelName" ].strip ()
505513 )
506514 self .__session .delete (
507- url , headers = copy (self .__jsonheader ), verify = False , auth = self .__auth
515+ url , headers = copy (self .__jsonheader ), auth = self .__auth
508516 ).raise_for_status ()
509517 elif "tagName" in kwds :
510518 url = self .__baseURL + self .__tagsResource + "/" + kwds ["tagName" ].strip ()
511519 self .__session .delete (
512- url , verify = False , headers = copy (self .__jsonheader ), auth = self .__auth
520+ url , headers = copy (self .__jsonheader ), auth = self .__auth
513521 ).raise_for_status ()
514522 elif "propertyName" in kwds :
515523 url = (
@@ -519,7 +527,7 @@ def __handleSingleDeleteParameter(self, **kwds):
519527 + kwds ["propertyName" ].strip ()
520528 )
521529 self .__session .delete (
522- url , headers = copy (self .__jsonheader ), verify = False , auth = self .__auth
530+ url , headers = copy (self .__jsonheader ), auth = self .__auth
523531 ).raise_for_status ()
524532 else :
525533 raise RuntimeError (
@@ -545,7 +553,6 @@ def __handleMultipleDeleteParameters(self, **kwds):
545553 + "/"
546554 + kwds ["channelName" ].strip (),
547555 headers = copy (self .__jsonheader ),
548- verify = False ,
549556 auth = self .__auth ,
550557 ).raise_for_status ()
551558 elif "tag" in kwds and "channelNames" in kwds :
@@ -568,7 +575,6 @@ def __handleMultipleDeleteParameters(self, **kwds):
568575 + "/"
569576 + kwds ["channelName" ],
570577 headers = copy (self .__jsonheader ),
571- verify = False ,
572578 auth = self .__auth ,
573579 ).raise_for_status ()
574580 elif "property" in kwds and "channelNames" in kwds :
@@ -674,7 +680,6 @@ def __handleSingleUpdateParameter(self, **kwds):
674680 self .__baseURL + self .__channelsResource + "/" + ch ["name" ],
675681 data = JSONEncoder ().encode (ch ),
676682 headers = copy (self .__jsonheader ),
677- verify = False ,
678683 auth = self .__auth ,
679684 )
680685 r .raise_for_status ()
@@ -684,7 +689,6 @@ def __handleSingleUpdateParameter(self, **kwds):
684689 self .__baseURL + self .__channelsResource ,
685690 data = JSONEncoder ().encode (chs ),
686691 headers = copy (self .__jsonheader ),
687- verify = False ,
688692 auth = self .__auth ,
689693 )
690694 r .raise_for_status ()
@@ -694,7 +698,6 @@ def __handleSingleUpdateParameter(self, **kwds):
694698 self .__baseURL + self .__propertiesResource + "/" + property ["name" ],
695699 data = JSONEncoder ().encode (property ),
696700 headers = copy (self .__jsonheader ),
697- verify = False ,
698701 auth = self .__auth ,
699702 )
700703 r .raise_for_status ()
@@ -704,7 +707,6 @@ def __handleSingleUpdateParameter(self, **kwds):
704707 self .__baseURL + self .__tagsResource + "/" + tag ["name" ],
705708 data = JSONEncoder ().encode (tag ),
706709 headers = copy (self .__jsonheader ),
707- verify = False ,
708710 auth = self .__auth ,
709711 )
710712 r .raise_for_status ()
@@ -713,7 +715,6 @@ def __handleSingleUpdateParameter(self, **kwds):
713715 self .__baseURL + self .__tagsResource ,
714716 data = JSONEncoder ().encode (kwds ["tags" ]),
715717 headers = copy (self .__jsonheader ),
716- verify = False ,
717718 auth = self .__auth ,
718719 )
719720 r .raise_for_status ()
@@ -750,7 +751,6 @@ def __handleMultipleUpdateParameters(self, **kwds):
750751 self .__baseURL + self .__tagsResource + "/" + tag ["name" ],
751752 data = JSONEncoder ().encode (tag ),
752753 headers = copy (self .__jsonheader ),
753- verify = False ,
754754 auth = self .__auth ,
755755 ).raise_for_status ()
756756 elif "tag" in kwds and "channelNames" in kwds :
@@ -767,7 +767,6 @@ def __handleMultipleUpdateParameters(self, **kwds):
767767 self .__baseURL + self .__tagsResource + "/" + tag ["name" ],
768768 data = JSONEncoder ().encode (tag ),
769769 headers = copy (self .__jsonheader ),
770- verify = False ,
771770 auth = self .__auth ,
772771 ).raise_for_status ()
773772 elif "property" in kwds and "channelName" in kwds :
@@ -786,7 +785,6 @@ def __handleMultipleUpdateParameters(self, **kwds):
786785 self .__baseURL + self .__propertiesResource + "/" + property ["name" ],
787786 data = JSONEncoder ().encode (property ),
788787 headers = copy (self .__jsonheader ),
789- verify = False ,
790788 auth = self .__auth ,
791789 ).raise_for_status ()
792790 elif "property" in kwds and "channelNames" in kwds :
@@ -807,7 +805,6 @@ def __handleMultipleUpdateParameters(self, **kwds):
807805 self .__baseURL + self .__propertiesResource + "/" + property ["name" ],
808806 data = JSONEncoder ().encode (property ),
809807 headers = copy (self .__jsonheader ),
810- verify = False ,
811808 auth = self .__auth ,
812809 ).raise_for_status ()
813810 elif "originalChannelName" in kwds and "channel" in kwds :
@@ -817,7 +814,6 @@ def __handleMultipleUpdateParameters(self, **kwds):
817814 self .__baseURL + self .__channelsResource + "/" + channelName ,
818815 data = JSONEncoder ().encode (ch ),
819816 headers = copy (self .__jsonheader ),
820- verify = False ,
821817 auth = self .__auth ,
822818 ).raise_for_status ()
823819 elif "originalPropertyName" in kwds and "property" in kwds :
@@ -827,7 +823,6 @@ def __handleMultipleUpdateParameters(self, **kwds):
827823 self .__baseURL + self .__propertiesResource + "/" + propName ,
828824 data = JSONEncoder ().encode (prop ),
829825 headers = copy (self .__jsonheader ),
830- verify = False ,
831826 auth = self .__auth ,
832827 ).raise_for_status ()
833828 elif "originalTagName" in kwds and "tag" in kwds :
@@ -837,7 +832,6 @@ def __handleMultipleUpdateParameters(self, **kwds):
837832 self .__baseURL + self .__tagsResource + "/" + tagName ,
838833 data = JSONEncoder ().encode (tag ),
839834 headers = copy (self .__jsonheader ),
840- verify = False ,
841835 auth = self .__auth ,
842836 ).raise_for_status ()
843837 else :
0 commit comments