'Converting a JS Rest API Call into Python

I'm looking for assistance with translating a piece of sample code written in javascript into something that will work with Python. The sample code is for the 'POST Authenticate' Endpoint of CCH Axcess' Open Integration Kit, which sends a response containing a Security Token

URL: https://api.cchaxcess.com/api/AuthServiceHelp/v1.0/help/operations/Authenticate

Sample Code:

             var _restIntegratorKey = "{User Integrator Key}";      // Please use this variable as global variable as all subsequent call required this integrator key to pass
             var _restHostUrl = "{host url}"; // i.e. "{Protocol}://{host name}/api"
             var request = $.ajax({
                 url: _restHostUrl + "/AuthService/v1.0/Authenticate",
                 contentType: "application/json; charset=utf-8", 
                 type: "GET",
                 dataType: "json"
             });
             
             var request = {
                UserName: "{username}",      // Specify Username
                UserSid: "anyone",
                Password: "{password}",      // Specify Password
                Realm: "{accountnumber}"     // Specify Account number
             }; 
        
             var request = $.ajax({
                url: _restHostUrl + "/AuthService/v1.0/Authenticate",
                data: JSON.stringify(request),
                
                beforeSend: _setHttpHeader,
                contentType: "application/json",
                type: "POST",
                dataType: "json"
             });
         
             request.done(function (data, textStatus, jqXHR) {
                 // This method block will be executed on succefull execution of api and will return security token.
                 // Below statement will store returned security token into browser cookie named: "CchNGAuthToken". you can use any other way to persist this token.
                 // This security token we required to pass in header for other rest api calls
                 document.cookie = "CchNGAuthToken=" + data.Token;
             });
         
             request.fail(function (jqXHR, textStatus, err) {
                 // This method block will be executed if API returns any error.
             });
         
            // Please keep these below two methods, As both will be used in subsequent call, to get SSOToken from Cookie
            // set Security token and integratorkey into request header
            function _setHttpHeader(xhr) {
                var ssoToken = _getSessionCookie("CchNGAuthToken");  // Read security token from document cookie which we set during authentication rest api call
                xhr.setRequestHeader("Security", ssoToken);
                xhr.setRequestHeader("IntegratorKey", _restIntegratorKey);
            };
           // Get session cookie 
           function _getSessionCookie(name) {
               var key = name + "=";
               var cookie = "";
           
               if (document.cookie.length > 0) {
                   var begin = document.cookie.indexOf(key)
                   if (begin != -1) {
                       begin += key.length
                       var end = document.cookie.indexOf(";", begin);
                        if (end == -1)
                           end = document.cookie.length;
                       cookie = unescape(document.cookie.substring(begin, end))
                   }
               }
               return cookie;
            };
         

I have an LIC file with the IntegratorKey stored in XML format, like:

<?xml version="1.0"?>
<IntegratorInfo>
    <IntegratorKey>XXXXX-XXX-XXX-XXXX</IntegratorKey>
</IntegratorInfo>

I think my primary issue is identifying the values of the 'ssoToken' and '_restIntegratorKey' variables once they're assigned inside the '_setHttpHeader' function.

My attempt:

def getcchauth():
     import requests
    
     integratorkey = getintkey()
     

     cookie = getcookie()
     
     authheaders = {
              'Security': cookie,
              'IntegratorKey': integratorkey,
              'content-type': 'application/json; charset=utf-8'        
              } 
     
     cchlogin = {
         'UserName':"user",
         "UserSid": 'anyone',
         'Password': 'password',
         'Realm' : '123456',
        }

     authattempt = requests.post(resthosturl+endpoint, data = cchlogin,
                                headers=authheaders)
     
     print(authattempt.headers)
    
def getcookie():
    import requests
    import json
    cookieresponse = requests.get(resthosturl+apiservdir,
    headers = headers)
    
    cookieresponse = json.dumps(cookieresponse.headers.__dict__['_store'])
    
    cookieresponse = json.loads(cookieresponse)

    
    cookie = 'CchNGAuthToken=' + cookieresponse['set-cookie'][1].split(';')[0].strip() + ';'
    print(cookie)
    
    return cookie

Thanks!



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source