İlk commit: Stepstead Godot istemci (4.6 Mobile)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
commit
6a1706051d
346 changed files with 14415 additions and 0 deletions
47
autoload/api.gd
Normal file
47
autoload/api.gd
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
extends Node
|
||||
## HTTP istemcisi — Stepstead API'sine istek atar.
|
||||
|
||||
signal request_completed(method: String, path: String, status: int, body: Variant)
|
||||
|
||||
func request(method: String, path: String, body: Variant = null, auth: bool = true) -> Dictionary:
|
||||
var http := HTTPRequest.new()
|
||||
add_child(http)
|
||||
var url := Config.get_api_base() + path
|
||||
var headers := ["Content-Type: application/json", "Accept: application/json"]
|
||||
if auth and Auth.token != "":
|
||||
headers.append("Authorization: Bearer " + Auth.token)
|
||||
|
||||
var method_id: int = HTTPClient.METHOD_GET
|
||||
match method.to_upper():
|
||||
"GET": method_id = HTTPClient.METHOD_GET
|
||||
"POST": method_id = HTTPClient.METHOD_POST
|
||||
"PUT": method_id = HTTPClient.METHOD_PUT
|
||||
"DELETE": method_id = HTTPClient.METHOD_DELETE
|
||||
"PATCH": method_id = HTTPClient.METHOD_PATCH
|
||||
|
||||
var body_str := ""
|
||||
if body != null:
|
||||
body_str = JSON.stringify(body)
|
||||
|
||||
var err := http.request(url, headers, method_id, body_str)
|
||||
if err != OK:
|
||||
http.queue_free()
|
||||
return {"ok": false, "status": 0, "error": "request_failed", "body": null}
|
||||
|
||||
var result: Array = await http.request_completed
|
||||
http.queue_free()
|
||||
|
||||
var status: int = result[1]
|
||||
var raw_body: PackedByteArray = result[3]
|
||||
var parsed: Variant = null
|
||||
if raw_body.size() > 0:
|
||||
var text := raw_body.get_string_from_utf8()
|
||||
var json := JSON.new()
|
||||
if json.parse(text) == OK:
|
||||
parsed = json.data
|
||||
else:
|
||||
parsed = text
|
||||
|
||||
var ok := status >= 200 and status < 300
|
||||
request_completed.emit(method.to_upper(), path, status, parsed)
|
||||
return {"ok": ok, "status": status, "body": parsed}
|
||||
Loading…
Add table
Add a link
Reference in a new issue