clan-core/pkgs/moonlight-sunshine-accept/moonlight_sunshine_accept/sunshine/api.py

65 lines
1.8 KiB
Python
Raw Normal View History

2024-03-08 08:47:44 +00:00
import base64
import http.client
import json
def get_context() -> http.client.ssl.SSLContext:
# context = http.client.ssl.create_default_context()
# # context.load_cert_chain(
# # certfile="/var/lib/sunshine/sunshine.cert", keyfile="/var/lib/sunshine/sunshine.key"
# # )
# context.load_cert_chain(
# certfile="/home/kenji/.config/sunshine/credentials/cacert.pem",
# keyfile="/home/kenji/.config/sunshine/credentials/cakey.pem",
# )
return http.client.ssl._create_unverified_context()
def pair(pin: str) -> str:
conn = http.client.HTTPSConnection("localhost", 47990, context=get_context())
# TODO: dynamic username and password
user_and_pass = base64.b64encode(b"sunshine:sunshine").decode("ascii")
headers = {
"Content-Type": "application/json",
"Authorization": f"Basic {user_and_pass}",
2024-03-08 08:47:44 +00:00
}
# Define the parameters
params = json.dumps({"pin": f"{pin}"})
# Make the request
conn.request("POST", "/api/pin", params, headers)
# Get and print the response
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
return data.decode("utf-8")
def restart() -> None:
# Define the connection
conn = http.client.HTTPSConnection(
"localhost", 47990, context=http.client.ssl._create_unverified_context()
)
user_and_pass = base64.b64encode(b"sunshine:sunshine").decode("ascii")
headers = {
"Content-Type": "application/json",
"Authorization": f"Basic {user_and_pass}",
2024-03-08 08:47:44 +00:00
}
# Define the parameters
params = {}
# Make the request
conn.request("POST", "/api/restart", params, headers)
# Get and print the response
# There wont be a response, because it is restarted
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))