import json import os import sys import urllib.request def emit(key: str, value) -> None: # JSON string literals are valid YAML scalars (YAML 1.2 is a superset of JSON). print(f"{key}: {json.dumps(value)}") def require_env(name: str) -> str: value = os.environ.get(name) if not value: print(f"Error: {name} environment variable is not set.", file=sys.stderr) sys.exit(1) return value def main() -> None: url = require_env("URL") req = urllib.request.Request(url, data=b"hello", method="POST") req.add_header("Content-Type", "text/plain") req.add_header("X-Test", "123") with urllib.request.urlopen(req, timeout=10) as resp: data = json.loads(resp.read().decode()) emit("method", data.get("method")) emit("path", data.get("path")) emit("query", data.get("query")) emit("body", data.get("body")) headers = data.get("headers") or {} x_test = None if isinstance(headers.get("X-Test"), list) and headers["X-Test"]: x_test = headers["X-Test"][0] emit("x_test", x_test) if __name__ == "__main__": main()