extends Label class_name OpeningLabel var http_request := HTTPRequest.new() var url := "https://explorer.lichess.ovh/masters?topGames=0&moves=2&fen=%s" var current_req := "" func _ready(): add_child(http_request) Events.connect("turn_over", self, "update_opening") Globals.grid.connect("load_pgn", self, "update_opening") Globals.grid.connect("clear_pgn", self, "update_opening") Globals.grid.connect("remove_last", self, "update_opening") http_request.connect("request_completed", self, "_request_completed") func update_opening(_var := null) -> void: if Utils.internet: var fen: String = Globals.grid.chess.fen() if fen != Globals.grid.chess.DEFAULT_POSITION && fen != current_req: if current_req: http_request.cancel_request() current_req = fen var u = url % fen.replace(" ", "_").http_escape() Log.net(["REQUEST: get opening with url:", u]) http_request.request(u) else: set_text("") func _request_completed(result, _response_code, _headers, byte_body): set_text("") # empty text and hide self current_req = "" if result != OK: # technically REQUEST_SUCCESS but i cant find it return var body = byte_body.get_string_from_utf8() Log.net("RECIEVED:" + body) var response = parse_json(body) if response.opening != null and "name" in response.opening: set_text(" %s" % response.opening.name) func set_text(_text := ""): visible = _text != "" text = _text.strip_edges()