def pl_switch(protocol, did, value, server_url, username, password):
    """
    >>> pl_switch("X10", "A5", "on", "http://localhost:8000", "r", "r")
    """

    url = os.path.join(
        server_url, PL_SWITCH_URL.format(**{
            "protocol": protocol,
            "did": did,
        }))
    logger.debug("Contacting: %s, username: %s/%s" % (url, username, password))
    r = requests.put(url,
                     data={"value": value},
                     headers={
                         "USERNAME": username,
                         "PASSWORD": password
                     },
                     allow_redirects=False)
    #print r.content

    if r.status_code != 302:
        logger.error("Unexpected response from REST API, status_code: %s" %
                     r.status_code)
        try:
            raise RestApiException(r.json(), r.status_code)
        except JSONDecodeError:
            raise RestApiException(r.text, r.status_code)
    logger.debug("Expected response from REST API")
    return True
Beispiel #2
0
def upd_device(protocol, did, server_url, changes, username, password):
    url = os.path.join(server_url, DEVICE_BY_ID_URL.format(**{"did": did, "protocol": protocol}))
    r = requests.put(url, headers={"USERNAME": username, "PASSWORD": password}, data=changes, allow_redirects=False)
    if r.status_code != 302:
        try:
            raise RestApiException(r.json(), r.status_code)
        except JSONDecodeError:
            raise RestApiException(r.text, r.status_code)
    return True
Beispiel #3
0
def del_device(protocol, did, server_url, username, password):

    url = os.path.join(server_url, DEVICE_BY_ID_URL.format(**{"did": did, "protocol": protocol}))
    r = requests.delete(url, headers={"USERNAME": username, "PASSWORD": password})
    if r.status_code != 204:
        try:
            raise RestApiException(r.json(), r.status_code)
        except JSONDecodeError:
            raise RestApiException(r.text, r.status_code)
    return True
Beispiel #4
0
def list_devices(protocol, server_url, username, password):
    url = os.path.join(server_url, DEVICE_BY_PROTOCOL_URL.format(**{"protocol": protocol}))
    r = requests.get(url, headers={"USERNAME": username, "PASSWORD": password})
    if r.status_code == 404:
        return []
    if r.status_code != 200:
        try:
            raise RestApiException(r.json(), r.status_code)
        except JSONDecodeError:
            raise RestApiException(r.text, r.status_code)
    return r.json()
Beispiel #5
0
def get_protocols(server_url, username, password):
    url = os.path.join(server_url, PROTOCOL_URL)
    r = requests.get(url, headers={"USERNAME": username, "PASSWORD": password}, allow_redirects=False)

    if r.status_code != 200:
        try:
            raise RestApiException(r.json(), r.status_code)
        except JSONDecodeError:
            raise RestApiException(r.text, r.status_code)

    return [x["name"] for x in r.json()]
Beispiel #6
0
def add_device(protocol, did, caption, device_type, server_url, username, password):

    url = os.path.join(server_url, DEVICE_URL)
    data = {
        "protocol": protocol,
        "did": did,
        "device_type": device_type,
        "caption": caption,
    }
    r = requests.post(url, data=data, headers={"USERNAME": username, "PASSWORD": password}, allow_redirects=False)
    if r.status_code != 302:
        try:
            raise RestApiException(r.json(), r.status_code)
        except JSONDecodeError:
            raise RestApiException(r.text, r.status_code)

    return True
def pl_all_lights_off(protocol, group, server_url, username, password):
    #cmd/pl_all_lights_off/(?P<protocol>[a-z0-9A-Z]{3,4})/(?P<group>[\d\w]+)/
    url = os.path.join(
        server_url,
        PL_ALL_LIGHTS_OFF.format(**{
            "protocol": protocol,
            "group": group
        }))
    r = requests.put(url,
                     data={},
                     headers={
                         "USERNAME": username,
                         "PASSWORD": password
                     },
                     allow_redirects=False)
    if r.status_code != 200:
        try:
            raise RestApiException(r.json(), r.status_code)
        except JSONDecodeError:
            raise RestApiException(r.text, r.status_code)
    return True
def pl_dim(protocol, did, value, server_url, username, password):
    """
    >>> pl_dim("X10", "A5", 30, "http://localhost:8000", "r", "r")
    """
    #print username
    url = os.path.join(
        server_url, PL_DIM_URL.format(**{
            "protocol": protocol,
            "did": did,
        }))
    r = requests.post(url,
                      data={"value": value},
                      headers={
                          "USERNAME": username,
                          "PASSWORD": password
                      },
                      allow_redirects=False)
    if r.status_code != 302:
        try:
            raise RestApiException(r.json(), r.status_code)
        except JSONDecodeError:
            raise RestApiException(r.text, r.status_code)
    return True