47 lines
1.1 KiB
GDScript

@tool
extends AbstractRoomRepo
class_name RoomRepoHTTP
const BASE_URL = "http://89.223.87.146:5004"
signal rooms_loaded(rooms: Array[RoomEntity])
signal request_failed(error_message: String)
const ROOM_ENDPOINT = "/room/"
var _http_client := HTTPTalkpalClient.new(BASE_URL)
func _init():
add_child(_http_client)
_http_client.request_failed.connect(_on_request_failed)
func list_rooms() -> Array[RoomEntity]:
var result = await _http_client.request(ROOM_ENDPOINT, HTTPClient.METHOD_GET)
if result is Array:
var rooms = _parse_room_list(result)
return rooms
else:
emit_signal("request_failed", "Failed to load rooms")
return []
func get_room(id: String) -> RoomEntity:
var rooms = await list_rooms()
for room in rooms:
if room.id == id:
return room
return null
func _parse_room_list(data: Array) -> Array[RoomEntity]:
var rooms: Array[RoomEntity] = []
for item in data:
var room = RoomEntity.new()
room.id = item.get("id")
room.title = item.get("title")
rooms.append(room)
return rooms
func _on_request_failed(error_message: String):
emit_signal("request_failed", error_message)