import urllib 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())