in jobs/eam-integrations/scripts/api/XMatters/XMatters.py [0:0]
def update_user(wd_user, xm_user, xm_sites):
logger.info(
"Updating user %s (%s) in XMatters" % (xm_user["id"], xm_user["targetName"])
)
url = _config.base_URL + "/people"
if USE_BASIC_AUTH:
headers = {"Content-Type": "application/json"}
else:
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + get_access_token(),
}
site_key = (
wd_user.get("User_Home_Country", "")
+ ":"
+ wd_user.get("User_Home_Postal_Code", "")
)
person_data = {
"id": xm_user["id"],
"firstName": sanitize_string_properties(
wd_user.get("User_Preferred_First_Name", "[NO FIRST NAME]")
),
"lastName": sanitize_string_properties(
wd_user.get("User_Preferred_Last_Name", "[NO LAST NAME]")
),
"site": xm_sites[site_key],
"properties": {
"Home City": wd_user.get("User_Home_City", ""),
"Home Country": wd_user.get("User_Home_Country", ""),
"Home Zipcode": wd_user.get("User_Home_Postal_Code", "")[:20]
},
}
logger.debug("will upload this:")
logger.debug(json.dumps(person_data))
if USE_BASIC_AUTH:
response = requests.post(
url,
headers=headers,
auth=(_config.xm_username, _config.xm_password),
data=json.dumps(person_data),
proxies=_config.proxies,
)
else:
response = requests.post(
url, headers=headers, data=json.dumps(person_data), proxies=_config.proxies
)
if response.status_code == 200:
return person_data # for the unittest
else:
logger.critical(
"ERROR: something went wrong updating user %s (%s)"
% (xm_user["id"], xm_user["targetName"])
)
logger.critical(response)
raise Exception(response.content)