Small updatemaster
authorKazuki Suzuki Przyborowski <[email protected]>
Tue, 12 Nov 2024 23:43:19 +0000 (12 17:43 -0600)
committerKazuki Suzuki Przyborowski <[email protected]>
Tue, 12 Nov 2024 23:43:19 +0000 (12 17:43 -0600)
.gitattributes [new file with mode: 0644]
pyopencnam.py

diff --git a/.gitattributes b/.gitattributes
new file mode 100644 (file)
index 0000000..9563e0d
--- /dev/null
@@ -0,0 +1 @@
+*       text eol=lf
index 61cc196..f93aa85 100644 (file)
-#!/usr/bin/python\r
-# -*- coding: utf-8 -*-\r
-\r
-'''\r
-    This program is free software; you can redistribute it and/or modify\r
-    it under the terms of the Revised BSD License.\r
-\r
-    This program is distributed in the hope that it will be useful,\r
-    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-    Revised BSD License for more details.\r
-\r
-    Copyright 2020 Cool Dude 2k - http://idb.berlios.de/\r
-    Copyright 2020 Game Maker 2k - http://intdb.sourceforge.net/\r
-    Copyright 2020 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski\r
-\r
-    $FileInfo: pyopencnam.py - Last Update: 10/22/2024 Ver. 1.2.4 RC 1 - Author: cooldude2k $\r
-'''\r
-\r
-from __future__ import absolute_import, division, print_function, unicode_literals, generators, with_statement, nested_scopes\r
-import imp\r
-import os\r
-import sys\r
-import json\r
-import base64\r
-import platform\r
-\r
-'''\r
-if(sys.version_info[:2] <= (3, 4)):\r
-    import imp;\r
-else:\r
-    import importlib;\r
-'''\r
-\r
-if __name__ == '__main__':\r
-    import argparse\r
-    get_input = input\r
-    if(sys.version_info[:2] <= (2, 7)):\r
-        get_input = raw_input\r
-\r
-try:\r
-    from ConfigParser import SafeConfigParser\r
-except ImportError:\r
-    if(sys.version_info[:2] <= (3, 2)):\r
-        from configparser import SafeConfigParser\r
-    else:\r
-        from configparser import ConfigParser as SafeConfigParser\r
-\r
-try:\r
-    imp.find_module('requests')\r
-    haverequests = True\r
-    import requests\r
-except ImportError:\r
-    haverequests = False\r
-    havemechanize = False\r
-try:\r
-    imp.find_module('mechanize')\r
-    havemechanize = True\r
-    import mechanize\r
-except ImportError:\r
-    havemechanize = False\r
-\r
-try:\r
-    from urllib2 import urlopen, Request\r
-except ImportError:\r
-    from urllib.request import urlopen, Request\r
-\r
-try:\r
-    from urllib import urlencode\r
-except ImportError:\r
-    from urllib.parse import urlencode\r
-\r
-__program_name__ = "PyOpenCNAM"\r
-__project__ = __program_name__\r
-__project_url__ = "https://github.com/GameMaker2k/PyOpenCNAM"\r
-__version_info__ = (1, 2, 4, "RC 1", 1)\r
-__version_date_info__ = (2024, 10, 22, "RC 1", 1)\r
-__version_date__ = str(__version_date_info__[0])+"."+str(__version_date_info__[\r
-    1]).zfill(2)+"."+str(__version_date_info__[2]).zfill(2)\r
-\r
-if(__version_info__[4] != None):\r
-    __version_date_plusrc__ = __version_date__ + \\r
-        "-"+str(__version_date_info__[4])\r
-if(__version_info__[4] == None):\r
-    __version_date_plusrc__ = __version_date__\r
-if(__version_info__[3] != None):\r
-    __version__ = str(__version_info__[0])+"."+str(__version_info__[1])+"."+str(\r
-        __version_info__[2])+" "+str(__version_info__[3])\r
-if(__version_info__[3] == None):\r
-    __version__ = str(\r
-        __version_info__[0])+"."+str(__version_info__[1])+"."+str(__version_info__[2])\r
-\r
-geturls_ua_pyopencnam_python = "Mozilla/5.0 (compatible; {proname}/{prover}; +{prourl})".format(\r
-    proname=__project__, prover=__version__, prourl=__project_url__)\r
-if(platform.python_implementation() != ""):\r
-    geturls_ua_pyopencnam_python_alt = "Mozilla/5.0 (compatible; {osver}; {archtype}; +{prourl}) {pyimp}/{pyver} (KHTML, like Gecko) {proname}/{prover}".format(osver=platform.system(\r
-    )+" "+platform.release(), archtype=platform.machine(), prourl=__project_url__, pyimp=platform.python_implementation(), pyver=platform.python_version(), proname=__project__, prover=__version__)\r
-if(platform.python_implementation() == ""):\r
-    geturls_ua_pyopencnam_python_alt = "Mozilla/5.0 (compatible; {osver}; {archtype}; +{prourl}) {pyimp}/{pyver} (KHTML, like Gecko) {proname}/{prover}".format(osver=platform.system(\r
-    )+" "+platform.release(), archtype=platform.machine(), prourl=__project_url__, pyimp="Python", pyver=platform.python_version(), proname=__project__, prover=__version__)\r
-\r
-master_phone_number = "+16786318356"\r
-master_account_sid = None\r
-master_auth_token = None\r
-master_service_level = "standard"\r
-master_casing = "caps"\r
-master_mobile = "location"\r
-master_no_value = "unknown"\r
-master_geo = "wire"\r
-master_http_lib = "urllib"\r
-\r
-master_opencnam_url_old = "https://api.opencnam.com/v3/phone/{phone_number_str}?account_sid={account_sid_str}&auth_token={auth_token_str}&format=json&service_level={service_level_str}&casing={casing_str}&mobile={mobile_str}&no_value={no_value_str}&geo={geo_str}"\r
-master_opencnam_url = "https://api.opencnam.com/v3/phone/{phone_number_str}?format=json&service_level={service_level_str}&casing={casing_str}&mobile={mobile_str}&no_value={no_value_str}&geo={geo_str}"\r
-\r
-if(os.path.exists("pyopencnam.ini") and os.path.isfile("pyopencnam.ini")):\r
-    cfgparser = SafeConfigParser()\r
-    cfgparser.read("pyopencnam.ini")\r
-    master_phone_number = cfgparser.get("OpenCNAM", "phone_number")\r
-    master_account_sid = cfgparser.get("OpenCNAM", "account_sid")\r
-    if(len(master_account_sid) <= 0):\r
-        master_account_sid = None\r
-    master_auth_token = cfgparser.get("OpenCNAM", "auth_token")\r
-    if(len(master_auth_token) <= 0):\r
-        master_auth_token = None\r
-    master_opencnam_url = cfgparser.get("OpenCNAM", "opencnam_url")\r
-    master_service_level = cfgparser.get("OpenCNAM", "service_level")\r
-    master_casing = cfgparser.get("OpenCNAM", "casing")\r
-    master_mobile = cfgparser.get("OpenCNAM", "mobile")\r
-    master_no_value = cfgparser.get("OpenCNAM", "no_value")\r
-    master_geo = cfgparser.get("OpenCNAM", "geo")\r
-    master_http_lib = cfgparser.get("OpenCNAM", "http_lib")\r
-\r
-if __name__ == '__main__':\r
-    argparser = argparse.ArgumentParser(\r
-        description="Get cnam info from phone numbers from opencnam", conflict_handler="resolve", add_help=True)\r
-    argparser.add_argument("-v", "--version", action="version",\r
-                           version=__program_name__+" "+__version__)\r
-    argparser.add_argument(\r
-        "-p", "--phonenumber", default=master_phone_number, help="enter phone number to lookup")\r
-    argparser.add_argument(\r
-        "-a", "--accountsid", default=master_account_sid, help="enter account sid for lookup")\r
-    argparser.add_argument(\r
-        "-t", "--authtoken", default=master_auth_token, help="enter auth token for lookup")\r
-    argparser.add_argument(\r
-        "-s", "--servicelevel", default=master_service_level, help="enter service level for lookup")\r
-    argparser.add_argument(\r
-        "-o", "--opencnamurl", default=master_opencnam_url, help="enter url for lookup")\r
-    argparser.add_argument(\r
-        "-c", "--casing", default=master_opencnam_url, help="casing type for output vaule")\r
-    argparser.add_argument(\r
-        "-m", "--mobile", default=master_opencnam_url, help="output for mobile numbers")\r
-    argparser.add_argument(\r
-        "-n", "--novalue", default=master_opencnam_url, help="output for unknown numbers")\r
-    argparser.add_argument(\r
-        "-g", "--geo", default=master_opencnam_url, help="output for geo locations")\r
-    argparser.add_argument("-h", "--httplib", default=master_http_lib,\r
-                           help="select httplib to use for request")\r
-    argparser.add_argument(\r
-        "-i", "--input", action="store_false", help="get input from command prompt")\r
-    getargs = argparser.parse_args()\r
-    master_phone_number = getargs.phonenumber\r
-    master_account_sid = getargs.accountsid\r
-    master_auth_token = getargs.authtoken\r
-    master_opencnam_url = getargs.opencnamurl\r
-    master_service_level = getargs.servicelevel\r
-    master_casing = getargs.casing\r
-    master_mobile = getargs.mobile\r
-    master_no_value = getargs.novalue\r
-    master_geo = getargs.geo\r
-    master_http_lib = getargs.httplib\r
-\r
-\r
-def make_http_headers_from_dict_to_list(headers={'Referer': "https://www.opencnam.com/dashboard/delivery/query-tool", 'User-Agent': geturls_ua_pyopencnam_python_alt}):\r
-    if isinstance(headers, dict):\r
-        returnval = []\r
-        if(sys.version[0] == "2"):\r
-            for headkey, headvalue in headers.iteritems():\r
-                returnval.append((headkey, headvalue))\r
-        if(sys.version[0] >= "3"):\r
-            for headkey, headvalue in headers.items():\r
-                returnval.append((headkey, headvalue))\r
-    elif isinstance(headers, list):\r
-        returnval = headers\r
-    else:\r
-        returnval = False\r
-    return returnval\r
-\r
-\r
-def get_httplib_support(checkvalue=None):\r
-    global haverequests, havemechanize\r
-    returnval = []\r
-    returnval.append("urllib")\r
-    if(haverequests == True):\r
-        returnval.append("requests")\r
-    if(havemechanize == True):\r
-        returnval.append("mechanize")\r
-    if(not checkvalue == None):\r
-        if(checkvalue == "urllib1" or checkvalue == "urllib2"):\r
-            checkvalue = "urllib"\r
-        if(checkvalue in returnval):\r
-            returnval = True\r
-        else:\r
-            returnval = False\r
-    return returnval\r
-\r
-\r
-def query_cnam_info(phone_number=master_phone_number, account_sid=master_account_sid, auth_token=master_auth_token, opencnam_url=master_opencnam_url, service_level=master_service_level, casing=master_casing, mobile=master_mobile, no_value=master_no_value, geo=master_geo, httplibuse=master_http_lib):\r
-    if(phone_number == None or account_sid == None or auth_token == None or service_level == None or (service_level != "standard" and service_level != "plus")):\r
-        return False\r
-    if(not get_httplib_support(httplibuse)):\r
-        httplibuse = "urllib"\r
-    if(httplibuse == "urllib"):\r
-        opencnam_api_url = Request(opencnam_url.format(phone_number_str=phone_number, account_sid_str=account_sid, auth_token_str=auth_token,\r
-                                   service_level_str=service_level, casing_str=casing, mobile_str=mobile, no_value_str=no_value, geo_str=geo))\r
-        preb64_user_string = str(master_account_sid)+":"+str(master_auth_token)\r
-        if(sys.version[0] == "2"):\r
-            base64_user_string = base64.b64encode(preb64_user_string)\r
-            opencnam_api_url.add_header(\r
-                "Authorization", "Basic "+base64_user_string)\r
-        if(sys.version[0] >= "3"):\r
-            base64_user_string = base64.b64encode(preb64_user_string.encode())\r
-            opencnam_api_url.add_header(\r
-                "Authorization", "Basic "+base64_user_string.decode())\r
-        opencnam_api_url.add_header(\r
-            "User-Agent", geturls_ua_pyopencnam_python_alt)\r
-        opencnam_api_url.add_header(\r
-            "Referer", "https://www.opencnam.com/dashboard/delivery/query-tool")\r
-        opencnam_api_data = urlopen(opencnam_api_url)\r
-        outdata = json.load(opencnam_api_data)\r
-    elif(httplibuse == "requests"):\r
-        preb64_user_string = str(master_account_sid)+":"+str(master_auth_token)\r
-        r_header = {}\r
-        if(sys.version[0] == "2"):\r
-            base64_user_string = base64.b64encode(preb64_user_string)\r
-            r_header.update({'Authorization': base64_user_string})\r
-        if(sys.version[0] >= "3"):\r
-            base64_user_string = base64.b64encode(preb64_user_string.encode())\r
-            r_header.update({'Authorization': base64_user_string.decode()})\r
-        r_header.update({'User-Agent': geturls_ua_pyopencnam_python_alt})\r
-        r_header.update(\r
-            {'Referer': "https://www.opencnam.com/dashboard/delivery/query-tool"})\r
-        opencnam_api_data = requests.get(opencnam_url.format(phone_number_str=phone_number, account_sid_str=account_sid, auth_token_str=auth_token,\r
-                                         service_level_str=service_level, casing_str=casing, mobile_str=mobile, no_value_str=no_value, geo_str=geo), headers=r_header)\r
-        outdata = opencnam_api_data.json()\r
-    elif(httplibuse == "mechanize"):\r
-        geturls_opener = mechanize.Browser()\r
-        preb64_user_string = str(master_account_sid)+":"+str(master_auth_token)\r
-        r_header = {}\r
-        if(sys.version[0] == "2"):\r
-            base64_user_string = base64.b64encode(preb64_user_string)\r
-            r_header.update({'Authorization': base64_user_string})\r
-        if(sys.version[0] >= "3"):\r
-            base64_user_string = base64.b64encode(preb64_user_string.encode())\r
-            r_header.update({'Authorization': base64_user_string.decode()})\r
-        r_header.update({'User-Agent': geturls_ua_pyopencnam_python_alt})\r
-        r_header.update(\r
-            {'Referer': "https://www.opencnam.com/dashboard/delivery/query-tool"})\r
-        r_header = make_http_headers_from_dict_to_list(r_header)\r
-        geturls_opener.addheaders = r_header\r
-        geturls_opener.set_handle_robots(False)\r
-        print(r_header)\r
-        opencnam_api_data = geturls_opener.open(opencnam_url.format(phone_number_str=phone_number, account_sid_str=account_sid, auth_token_str=auth_token,\r
-                                                service_level_str=service_level, casing_str=casing, mobile_str=mobile, no_value_str=no_value, geo_str=geo))\r
-        outdata = opencnam_api_data.json()\r
-    else:\r
-        outdata = None\r
-    return outdata\r
-\r
-\r
-if __name__ == '__main__':\r
-    if(getargs.input == True):\r
-        print(json.dumps(query_cnam_info(master_phone_number, master_account_sid, master_auth_token, master_opencnam_url,\r
-              master_service_level, master_casing, master_mobile, master_no_value, master_geo, master_http_lib)))\r
-    if(getargs.input == False):\r
-        user_account_sid = get_input("enter account sid for lookup: ")\r
-        if(len(user_account_sid) <= 0):\r
-            user_account_sid = master_account_sid\r
-        user_auth_token = get_input("enter auth token for lookup: ")\r
-        if(len(user_auth_token) <= 0):\r
-            user_auth_token = master_auth_token\r
-        user_service_level = get_input("enter service level for lookup: ")\r
-        if(len(user_service_level) <= 0):\r
-            user_service_level = master_service_level\r
-        user_phone_number = get_input("enter phone number to lookup: ")\r
-        while(len(user_phone_number) > 0):\r
-            print("\n")\r
-            print(json.dumps(query_cnam_info(user_phone_number, user_account_sid, user_auth_token, master_opencnam_url,\r
-                  user_service_level, master_casing, master_mobile, master_no_value, master_geo, master_http_lib)))\r
-            print("\n")\r
-            user_phone_number = get_input("enter phone number to lookup: ")\r
-            if(len(user_phone_number) <= 0):\r
-                break\r
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+
+'''
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the Revised BSD License.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    Revised BSD License for more details.
+
+    Copyright 2020 Cool Dude 2k - http://idb.berlios.de/
+    Copyright 2020 Game Maker 2k - http://intdb.sourceforge.net/
+    Copyright 2020 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski
+
+    $FileInfo: pyopencnam.py - Last Update: 10/22/2024 Ver. 1.2.4 RC 1 - Author: cooldude2k $
+'''
+
+from __future__ import absolute_import, division, print_function, unicode_literals, generators, with_statement, nested_scopes
+import imp
+import os
+import sys
+import json
+import base64
+import platform
+
+'''
+if(sys.version_info[:2] <= (3, 4)):
+    import imp;
+else:
+    import importlib;
+'''
+
+if __name__ == '__main__':
+    import argparse
+    get_input = input
+    if(sys.version_info[:2] <= (2, 7)):
+        get_input = raw_input
+
+try:
+    from ConfigParser import SafeConfigParser
+except ImportError:
+    if(sys.version_info[:2] <= (3, 2)):
+        from configparser import SafeConfigParser
+    else:
+        from configparser import ConfigParser as SafeConfigParser
+
+try:
+    imp.find_module('requests')
+    haverequests = True
+    import requests
+except ImportError:
+    haverequests = False
+    havemechanize = False
+try:
+    imp.find_module('mechanize')
+    havemechanize = True
+    import mechanize
+except ImportError:
+    havemechanize = False
+
+try:
+    from urllib2 import urlopen, Request
+except ImportError:
+    from urllib.request import urlopen, Request
+
+try:
+    from urllib import urlencode
+except ImportError:
+    from urllib.parse import urlencode
+
+__program_name__ = "PyOpenCNAM"
+__project__ = __program_name__
+__project_url__ = "https://github.com/GameMaker2k/PyOpenCNAM"
+__version_info__ = (1, 2, 4, "RC 1", 1)
+__version_date_info__ = (2024, 10, 22, "RC 1", 1)
+__version_date__ = str(__version_date_info__[0])+"."+str(__version_date_info__[
+    1]).zfill(2)+"."+str(__version_date_info__[2]).zfill(2)
+
+if(__version_info__[4] != None):
+    __version_date_plusrc__ = __version_date__ + \
+        "-"+str(__version_date_info__[4])
+if(__version_info__[4] == None):
+    __version_date_plusrc__ = __version_date__
+if(__version_info__[3] != None):
+    __version__ = str(__version_info__[0])+"."+str(__version_info__[1])+"."+str(
+        __version_info__[2])+" "+str(__version_info__[3])
+if(__version_info__[3] == None):
+    __version__ = str(
+        __version_info__[0])+"."+str(__version_info__[1])+"."+str(__version_info__[2])
+
+geturls_ua_pyopencnam_python = "Mozilla/5.0 (compatible; {proname}/{prover}; +{prourl})".format(
+    proname=__project__, prover=__version__, prourl=__project_url__)
+if(platform.python_implementation() != ""):
+    geturls_ua_pyopencnam_python_alt = "Mozilla/5.0 (compatible; {osver}; {archtype}; +{prourl}) {pyimp}/{pyver} (KHTML, like Gecko) {proname}/{prover}".format(osver=platform.system(
+    )+" "+platform.release(), archtype=platform.machine(), prourl=__project_url__, pyimp=platform.python_implementation(), pyver=platform.python_version(), proname=__project__, prover=__version__)
+if(platform.python_implementation() == ""):
+    geturls_ua_pyopencnam_python_alt = "Mozilla/5.0 (compatible; {osver}; {archtype}; +{prourl}) {pyimp}/{pyver} (KHTML, like Gecko) {proname}/{prover}".format(osver=platform.system(
+    )+" "+platform.release(), archtype=platform.machine(), prourl=__project_url__, pyimp="Python", pyver=platform.python_version(), proname=__project__, prover=__version__)
+
+master_phone_number = "+16786318356"
+master_account_sid = None
+master_auth_token = None
+master_service_level = "standard"
+master_casing = "caps"
+master_mobile = "location"
+master_no_value = "unknown"
+master_geo = "wire"
+master_http_lib = "urllib"
+
+master_opencnam_url_old = "https://api.opencnam.com/v3/phone/{phone_number_str}?account_sid={account_sid_str}&auth_token={auth_token_str}&format=json&service_level={service_level_str}&casing={casing_str}&mobile={mobile_str}&no_value={no_value_str}&geo={geo_str}"
+master_opencnam_url = "https://api.opencnam.com/v3/phone/{phone_number_str}?format=json&service_level={service_level_str}&casing={casing_str}&mobile={mobile_str}&no_value={no_value_str}&geo={geo_str}"
+
+if(os.path.exists("pyopencnam.ini") and os.path.isfile("pyopencnam.ini")):
+    cfgparser = SafeConfigParser()
+    cfgparser.read("pyopencnam.ini")
+    master_phone_number = cfgparser.get("OpenCNAM", "phone_number")
+    master_account_sid = cfgparser.get("OpenCNAM", "account_sid")
+    if(len(master_account_sid) <= 0):
+        master_account_sid = None
+    master_auth_token = cfgparser.get("OpenCNAM", "auth_token")
+    if(len(master_auth_token) <= 0):
+        master_auth_token = None
+    master_opencnam_url = cfgparser.get("OpenCNAM", "opencnam_url")
+    master_service_level = cfgparser.get("OpenCNAM", "service_level")
+    master_casing = cfgparser.get("OpenCNAM", "casing")
+    master_mobile = cfgparser.get("OpenCNAM", "mobile")
+    master_no_value = cfgparser.get("OpenCNAM", "no_value")
+    master_geo = cfgparser.get("OpenCNAM", "geo")
+    master_http_lib = cfgparser.get("OpenCNAM", "http_lib")
+
+if __name__ == '__main__':
+    argparser = argparse.ArgumentParser(
+        description="Get cnam info from phone numbers from opencnam", conflict_handler="resolve", add_help=True)
+    argparser.add_argument("-v", "--version", action="version",
+                           version=__program_name__+" "+__version__)
+    argparser.add_argument(
+        "-p", "--phonenumber", default=master_phone_number, help="enter phone number to lookup")
+    argparser.add_argument(
+        "-a", "--accountsid", default=master_account_sid, help="enter account sid for lookup")
+    argparser.add_argument(
+        "-t", "--authtoken", default=master_auth_token, help="enter auth token for lookup")
+    argparser.add_argument(
+        "-s", "--servicelevel", default=master_service_level, help="enter service level for lookup")
+    argparser.add_argument(
+        "-o", "--opencnamurl", default=master_opencnam_url, help="enter url for lookup")
+    argparser.add_argument(
+        "-c", "--casing", default=master_opencnam_url, help="casing type for output vaule")
+    argparser.add_argument(
+        "-m", "--mobile", default=master_opencnam_url, help="output for mobile numbers")
+    argparser.add_argument(
+        "-n", "--novalue", default=master_opencnam_url, help="output for unknown numbers")
+    argparser.add_argument(
+        "-g", "--geo", default=master_opencnam_url, help="output for geo locations")
+    argparser.add_argument("-h", "--httplib", default=master_http_lib,
+                           help="select httplib to use for request")
+    argparser.add_argument(
+        "-i", "--input", action="store_false", help="get input from command prompt")
+    getargs = argparser.parse_args()
+    master_phone_number = getargs.phonenumber
+    master_account_sid = getargs.accountsid
+    master_auth_token = getargs.authtoken
+    master_opencnam_url = getargs.opencnamurl
+    master_service_level = getargs.servicelevel
+    master_casing = getargs.casing
+    master_mobile = getargs.mobile
+    master_no_value = getargs.novalue
+    master_geo = getargs.geo
+    master_http_lib = getargs.httplib
+
+
+def make_http_headers_from_dict_to_list(headers={'Referer': "https://www.opencnam.com/dashboard/delivery/query-tool", 'User-Agent': geturls_ua_pyopencnam_python_alt}):
+    if isinstance(headers, dict):
+        returnval = []
+        if(sys.version[0] == "2"):
+            for headkey, headvalue in headers.iteritems():
+                returnval.append((headkey, headvalue))
+        if(sys.version[0] >= "3"):
+            for headkey, headvalue in headers.items():
+                returnval.append((headkey, headvalue))
+    elif isinstance(headers, list):
+        returnval = headers
+    else:
+        returnval = False
+    return returnval
+
+
+def get_httplib_support(checkvalue=None):
+    global haverequests, havemechanize
+    returnval = []
+    returnval.append("urllib")
+    if(haverequests == True):
+        returnval.append("requests")
+    if(havemechanize == True):
+        returnval.append("mechanize")
+    if(not checkvalue == None):
+        if(checkvalue == "urllib1" or checkvalue == "urllib2"):
+            checkvalue = "urllib"
+        if(checkvalue in returnval):
+            returnval = True
+        else:
+            returnval = False
+    return returnval
+
+
+def query_cnam_info(phone_number=master_phone_number, account_sid=master_account_sid, auth_token=master_auth_token, opencnam_url=master_opencnam_url, service_level=master_service_level, casing=master_casing, mobile=master_mobile, no_value=master_no_value, geo=master_geo, httplibuse=master_http_lib):
+    if(phone_number == None or account_sid == None or auth_token == None or service_level == None or (service_level != "standard" and service_level != "plus")):
+        return False
+    if(not get_httplib_support(httplibuse)):
+        httplibuse = "urllib"
+    if(httplibuse == "urllib"):
+        opencnam_api_url = Request(opencnam_url.format(phone_number_str=phone_number, account_sid_str=account_sid, auth_token_str=auth_token,
+                                   service_level_str=service_level, casing_str=casing, mobile_str=mobile, no_value_str=no_value, geo_str=geo))
+        preb64_user_string = str(master_account_sid)+":"+str(master_auth_token)
+        if(sys.version[0] == "2"):
+            base64_user_string = base64.b64encode(preb64_user_string)
+            opencnam_api_url.add_header(
+                "Authorization", "Basic "+base64_user_string)
+        if(sys.version[0] >= "3"):
+            base64_user_string = base64.b64encode(preb64_user_string.encode())
+            opencnam_api_url.add_header(
+                "Authorization", "Basic "+base64_user_string.decode())
+        opencnam_api_url.add_header(
+            "User-Agent", geturls_ua_pyopencnam_python_alt)
+        opencnam_api_url.add_header(
+            "Referer", "https://www.opencnam.com/dashboard/delivery/query-tool")
+        opencnam_api_data = urlopen(opencnam_api_url)
+        outdata = json.load(opencnam_api_data)
+    elif(httplibuse == "requests"):
+        preb64_user_string = str(master_account_sid)+":"+str(master_auth_token)
+        r_header = {}
+        if(sys.version[0] == "2"):
+            base64_user_string = base64.b64encode(preb64_user_string)
+            r_header.update({'Authorization': base64_user_string})
+        if(sys.version[0] >= "3"):
+            base64_user_string = base64.b64encode(preb64_user_string.encode())
+            r_header.update({'Authorization': base64_user_string.decode()})
+        r_header.update({'User-Agent': geturls_ua_pyopencnam_python_alt})
+        r_header.update(
+            {'Referer': "https://www.opencnam.com/dashboard/delivery/query-tool"})
+        opencnam_api_data = requests.get(opencnam_url.format(phone_number_str=phone_number, account_sid_str=account_sid, auth_token_str=auth_token,
+                                         service_level_str=service_level, casing_str=casing, mobile_str=mobile, no_value_str=no_value, geo_str=geo), headers=r_header)
+        outdata = opencnam_api_data.json()
+    elif(httplibuse == "mechanize"):
+        geturls_opener = mechanize.Browser()
+        preb64_user_string = str(master_account_sid)+":"+str(master_auth_token)
+        r_header = {}
+        if(sys.version[0] == "2"):
+            base64_user_string = base64.b64encode(preb64_user_string)
+            r_header.update({'Authorization': base64_user_string})
+        if(sys.version[0] >= "3"):
+            base64_user_string = base64.b64encode(preb64_user_string.encode())
+            r_header.update({'Authorization': base64_user_string.decode()})
+        r_header.update({'User-Agent': geturls_ua_pyopencnam_python_alt})
+        r_header.update(
+            {'Referer': "https://www.opencnam.com/dashboard/delivery/query-tool"})
+        r_header = make_http_headers_from_dict_to_list(r_header)
+        geturls_opener.addheaders = r_header
+        geturls_opener.set_handle_robots(False)
+        print(r_header)
+        opencnam_api_data = geturls_opener.open(opencnam_url.format(phone_number_str=phone_number, account_sid_str=account_sid, auth_token_str=auth_token,
+                                                service_level_str=service_level, casing_str=casing, mobile_str=mobile, no_value_str=no_value, geo_str=geo))
+        outdata = opencnam_api_data.json()
+    else:
+        outdata = None
+    return outdata
+
+
+if __name__ == '__main__':
+    if(getargs.input == True):
+        print(json.dumps(query_cnam_info(master_phone_number, master_account_sid, master_auth_token, master_opencnam_url,
+              master_service_level, master_casing, master_mobile, master_no_value, master_geo, master_http_lib)))
+    if(getargs.input == False):
+        user_account_sid = get_input("enter account sid for lookup: ")
+        if(len(user_account_sid) <= 0):
+            user_account_sid = master_account_sid
+        user_auth_token = get_input("enter auth token for lookup: ")
+        if(len(user_auth_token) <= 0):
+            user_auth_token = master_auth_token
+        user_service_level = get_input("enter service level for lookup: ")
+        if(len(user_service_level) <= 0):
+            user_service_level = master_service_level
+        user_phone_number = get_input("enter phone number to lookup: ")
+        while(len(user_phone_number) > 0):
+            print("\n")
+            print(json.dumps(query_cnam_info(user_phone_number, user_account_sid, user_auth_token, master_opencnam_url,
+                  user_service_level, master_casing, master_mobile, master_no_value, master_geo, master_http_lib)))
+            print("\n")
+            user_phone_number = get_input("enter phone number to lookup: ")
+            if(len(user_phone_number) <= 0):
+                break