_username = "<YOUR CXENSE USER ID>"
_secret = "<YOUR CXENSE API KEY>"
_siteGroupId = "<YOUR SITE GROUP ID>"
import json, base64, datetime, hmac, hashlib, http.client
def cxApi(path, obj):
date = datetime.datetime.utcnow().isoformat() + "Z"
signature = hmac.new(_secret.encode('utf-8'), date.encode('utf-8'), digestmod=hashlib.sha256).hexdigest()
headers = {"X-cXense-Authentication": "username=%s date=%s hmac-sha256-hex=%s" % (_username, date, signature)}
connection = http.client.HTTPSConnection("api.cxense.com", 443)
connection.request("POST", path, json.dumps(obj), headers)
response = connection.getresponse()
status = response.status
responseObj = json.loads(response.read().decode('utf-8'))
connection.close()
return status, responseObj
def errorHandling(status, response, message):
if status != 200:
raise Exception("%s (http status = %s, error details: '%s')" % (message, status, response['error']))
def hasCustomerPrefix(siteGroupId):
status, response = cxApi('/site/group', {"siteGroupId":siteGroupId, "admin":True})
errorHandling(status, response, "Failed to obtain site group information")
if 'prefix' in response['siteGroups'][0]:
return True
return False
def enableStandardTaxonomy(siteGroupId):
status, response = cxApi('/site/group/update', {"siteGroupId":siteGroupId, "useStandardTaxonomy":True, "admin":True})
errorHandling(status, response, "Failed to enable the default taxonomy")
if hasCustomerPrefix(_siteGroupId):
enableStandardTaxonomy(_siteGroupId)
else:
print('The site group lacks a custom prefix, not possible to enable taxonomy without one')