"""Python 3.11+, standard library. Never send real keys to a local mock server."""
import json
import os
import urllib.error
import urllib.request

class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

def screenshare(path, method="GET", body=None, idempotency_key=None):
    if not path.startswith("/") or path.startswith("//"):
        raise ValueError("Use an API-relative path")
    headers = {"Authorization": "Bearer " + os.environ["SCREENSHARE_API_KEY"]}
    encoded = None
    if body is not None:
        encoded = json.dumps(body, ensure_ascii=False).encode("utf-8")
        headers["Content-Type"] = "application/json"
    if idempotency_key:
        headers["Idempotency-Key"] = idempotency_key
    request = urllib.request.Request("https://api.screenshare.cn/v1" + path,
                                     data=encoded, headers=headers, method=method)
    try:
        with urllib.request.build_opener(NoRedirect).open(request, timeout=25) as response:
            return json.load(response)
    except urllib.error.HTTPError as exc:
        try:
            payload = json.load(exc)
        except (ValueError, UnicodeError):
            payload = {}
        raise RuntimeError(json.dumps({"status": exc.code,
            "code": payload.get("error", {}).get("code", "HTTP_ERROR"),
            "request_id": payload.get("request_id")})) from None

if __name__ == "__main__":
    print(json.dumps(screenshare("/me"), ensure_ascii=False, indent=2))
