Rough character selection screen + API
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
extends Node
|
||||
|
||||
const CHARACTER_API_URL := "https://pcharacter.ranaze.com/api/Characters"
|
||||
|
||||
func list_characters() -> Dictionary:
|
||||
return await _request(HTTPClient.METHOD_GET, CHARACTER_API_URL)
|
||||
|
||||
func create_character(character_name: String) -> Dictionary:
|
||||
var payload := JSON.stringify({
|
||||
"name": character_name
|
||||
})
|
||||
return await _request(HTTPClient.METHOD_POST, CHARACTER_API_URL, payload)
|
||||
|
||||
func delete_character(character_id: String) -> Dictionary:
|
||||
var url := "%s/%s" % [CHARACTER_API_URL, character_id]
|
||||
return await _request(HTTPClient.METHOD_DELETE, url)
|
||||
|
||||
func _request(method: int, url: String, body: String = "") -> Dictionary:
|
||||
var request := HTTPRequest.new()
|
||||
add_child(request)
|
||||
|
||||
var headers := PackedStringArray()
|
||||
if not AuthState.access_token.is_empty():
|
||||
headers.append("Authorization: Bearer %s" % AuthState.access_token)
|
||||
if method == HTTPClient.METHOD_POST or method == HTTPClient.METHOD_PUT:
|
||||
headers.append("Content-Type: application/json")
|
||||
|
||||
var err := request.request(url, headers, method, body)
|
||||
if err != OK:
|
||||
request.queue_free()
|
||||
return {
|
||||
"ok": false,
|
||||
"status": 0,
|
||||
"error": "Failed to send request (%s)." % err,
|
||||
"body": ""
|
||||
}
|
||||
|
||||
var result: Array = await request.request_completed
|
||||
request.queue_free()
|
||||
|
||||
var result_code: int = result[0]
|
||||
var response_code: int = result[1]
|
||||
var response_body: String = result[3].get_string_from_utf8()
|
||||
|
||||
if result_code != HTTPRequest.RESULT_SUCCESS:
|
||||
return {
|
||||
"ok": false,
|
||||
"status": response_code,
|
||||
"error": "Network error (%s)." % result_code,
|
||||
"body": response_body
|
||||
}
|
||||
|
||||
return {
|
||||
"ok": response_code >= 200 and response_code < 300,
|
||||
"status": response_code,
|
||||
"error": "",
|
||||
"body": response_body
|
||||
}
|
||||
Reference in New Issue
Block a user