From 0b22531dd46baed6e8ef0abe7e5df6c3ee481004 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9=20=28=D0=A5?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D1=8B=D1=87=D0=AA=29=20=D0=A5=D1=80=D0=B0?= =?UTF-8?q?=D0=BC=D0=BE=D0=B2?= Date: Fri, 15 Aug 2025 00:14:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20json()=20=D0=B2=20starlarkResp?= =?UTF-8?q?onse=20=D0=B2=20=20=20=D1=84=D0=B0=D0=B9=D0=BB=D0=B5=20internal?= =?UTF-8?q?/builtins/http.go:175-185.=20=D0=A2=D0=B5=D0=BF=D0=B5=D1=80?= =?UTF-8?q?=D1=8C=20=20=20response=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82?= =?UTF-8?q?=20=D0=B8=D0=BC=D0=B5=D0=B5=D1=82:=20=20=20-=20code=20-=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=B4=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0=20=20?= =?UTF-8?q?=20-=20headers=20-=20=D0=B7=D0=B0=D0=B3=D0=BE=D0=BB=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8=20=20=20-=20body=20-=20reader=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=87=D1=82=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D0=B0=20=D0=BE=D1=82=D0=B2=D0=B5=D1=82=D0=B0=20=20=20-=20json(?= =?UTF-8?q?)=20-=20=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D1=81=D0=B8=D0=BD=D0=B3=D0=B0=20JSON=20?= =?UTF-8?q?=D0=B8=D0=B7=20=D1=82=D0=B5=D0=BB=D0=B0=20=D0=BE=D1=82=D0=B2?= =?UTF-8?q?=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 3 ++- internal/builtins/http.go | 6 +++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index a354b92..e86a777 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,5 @@ .gigaide/ .idea/ .claude/ -CLAUDE.md \ No newline at end of file +CLAUDE.md +test* \ No newline at end of file diff --git a/internal/builtins/http.go b/internal/builtins/http.go index 65dfc46..471cd11 100644 --- a/internal/builtins/http.go +++ b/internal/builtins/http.go @@ -173,10 +173,14 @@ func makeRequest(name, method string, args starlark.Tuple, kwargs []starlark.Tup } func starlarkResponse(res *http.Response) *starlarkstruct.Struct { + reader := newStarlarkReader(res.Body) return starlarkstruct.FromStringDict(starlarkstruct.Default, starlark.StringDict{ "code": starlark.MakeInt(res.StatusCode), "headers": starlarkStringSliceMap(res.Header), - "body": newStarlarkReader(res.Body), + "body": reader, + "json": starlark.NewBuiltin("response.json", func(thread *starlark.Thread, b *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + return reader.readJSON(thread, b, args, kwargs) + }), }) }