This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/packages/gitea-client/star/http_helpers.star
gobha 495bcc94f4 V0.38.4 full composition (#237)
Co-authored-by: gobha <jasafpro@gmail.com>
Co-committed-by: gobha <jasafpro@gmail.com>
2026-03-25 17:29:08 +00:00

61 lines
2.0 KiB
Plaintext

# gitea-client — HTTP helpers
#
# Shared HTTP utilities for Gitea API calls.
# All functions take a `conn` dict from connections.get("gitea").
def auth_headers(conn):
"""Build authorization headers from a connection dict."""
token = conn.get("api_token", "")
if not token:
return {}
return {"Authorization": "token " + token}
def _base(conn):
"""Return base URL with trailing slash stripped."""
url = conn.get("base_url", "")
if url.endswith("/"):
url = url[:-1]
return url
def gitea_get(conn, path):
"""GET request to Gitea API. Returns decoded body or None."""
url = _base(conn) + "/api/v1" + path
resp = http.get(url=url, headers=auth_headers(conn))
if int(resp["status"]) >= 400:
return None
body = resp.get("body", "")
if not body:
return None
return json.decode(body)
def gitea_post(conn, path, data):
"""POST request to Gitea API. Returns decoded body or None."""
url = _base(conn) + "/api/v1" + path
hdrs = dict(auth_headers(conn), **{"Content-Type": "application/json"})
resp = http.post(url=url, body=json.encode(data), headers=hdrs)
if int(resp["status"]) >= 400:
return None
body = resp.get("body", "")
if not body:
return None
return json.decode(body)
def gitea_patch(conn, path, data):
"""PATCH request to Gitea API (via X-HTTP-Method-Override). Returns decoded body or None."""
url = _base(conn) + "/api/v1" + path
hdrs = dict(auth_headers(conn), **{
"Content-Type": "application/json",
"X-HTTP-Method-Override": "PATCH",
})
resp = http.post(url=url, body=json.encode(data), headers=hdrs)
if int(resp["status"]) >= 400:
return None
body = resp.get("body", "")
if not body:
return None
return json.decode(body)
def resp(status, data):
"""Build a standard JSON response dict."""
return {"status": status, "body": json.encode(data), "headers": {"Content-Type": "application/json"}}