def update_user()

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)