0ad/source/tools/rlclient/python/zero_ad/api.py

34 lines
1,003 B
Python
Raw Normal View History

from urllib import request
import json
class RLAPI:
def __init__(self, url):
self.url = url
def post(self, route, data):
response = request.urlopen(url=f"{self.url}/{route}", data=bytes(data, "utf8"))
return response.read()
def step(self, commands):
post_data = "\n".join((f"{player};{json.dumps(action)}" for (player, action) in commands))
return self.post("step", post_data)
def reset(self, scenario_config, player_id, save_replay):
path = "reset?"
if save_replay:
path += "saveReplay=1&"
if player_id:
path += f"playerID={player_id}&"
return self.post(path, scenario_config)
def get_templates(self, names):
post_data = "\n".join(names)
response = self.post("templates", post_data)
return zip(names, response.decode().split("\n"))
def evaluate(self, code):
response = self.post("evaluate", code)
return json.loads(response.decode())