def add_user()

in jobs/eam-integrations/scripts/api/XMatters/XMatters.py [0:0]


def add_user(wd_user, xm_sites):
    logger.info("Adding user %s to XMatters" % (wd_user["User_Email_Address"]))
    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 = {
        "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]")
        ),
        "targetName": wd_user["User_Email_Address"],
        "site": xm_sites[site_key],
        "recipientType": "PERSON",
        "status": "ACTIVE",
        "roles": ["Standard User"],
        "supervisors": [_config.supervisor_id],
        "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 == 201:
        rjson = response.json()
    else:
        logger.critical(
            "ERROR: something went wrong adding user %s"
            % (wd_user["User_Email_Address"])
        )
        logger.critical(response)
        logger.critical(response.content)
        raise Exception(response.content)

    person_data["id"] = rjson["id"]
    add_work_email_device(person_data)

    return person_data  # for the unittest