grzegorz-clients/api.py

71 lines
1.6 KiB
Python
Raw Normal View History

import requests, json
from urllib.parse import urlencode
2018-02-26 22:55:01 +01:00
from functools import wraps
import api
2018-02-26 22:55:01 +01:00
# This will be overwritten by config
BASE_URL = "http://localhost:8080/api"
2018-02-26 22:55:01 +01:00
# Exceptions:
class APIError(Exception): pass
# decorator:
def request_post(func):
@wraps(func)
def new_func(*args, **kwargs):
url, data = func(*args, **kwargs)
response = requests.post(f"{BASE_URL}/{url}", data=data)
data = json.loads(response.text)
if "error" not in data or data["error"] != False:
print(data)
raise APIError(data["error_msg"])
return data["success"]
2018-02-26 22:55:01 +01:00
return new_func
def request_get(func):
@wraps(func)
def new_func(*args, **kwargs):
url = func(*args, **kwargs)
response = requests.get(f"{BASE_URL}/{url}")
data = json.loads(response.text)
if "error" not in data or data["error"] != False:
raise APIError(data["error_msg"])
return data["value"]
2018-02-26 22:55:01 +01:00
return new_func
# methods:
@request_post
def load_path(path:str):
args = urlencode(locals())
return f"load?{args}", None
2018-02-26 22:55:01 +01:00
@request_get
def is_playing():
return f"play"
2018-02-26 22:55:01 +01:00
@request_post
def set_playing(play:bool):
args = urlencode(locals())
return f"play?{args}", None
2018-02-26 22:55:01 +01:00
@request_get
def get_volume():
return f"volume"
2018-02-26 22:55:01 +01:00
@request_post
def set_volume(volume:int):# between 0 and 100 (you may also exceed 100)
args = urlencode(locals())
return f"volume?{args}", None
2018-02-26 22:55:01 +01:00
@request_get
def get_playlist():
return f"playlist"
2018-02-26 22:55:01 +01:00
@request_post
def playlist_next():
return f"playlist/next", None
2018-02-26 22:55:01 +01:00
@request_post
def playlist_previous():
return f"playlist/previous", None