def _communicate(self, endpoint, payload): ''' Endpoint is a string path Payload is a JSON object ''' headers = dict() headers["Content-Type"] = "application/json" headers["User-Agent"] = "YAMCL" url_obj = URL(endpoint, URL.AUTH) server_data = [None, None] try: url_request = url_obj.url_object(JSONTools.serialize_json(payload).encode(OnlineAccount.TEXT_ENCODING), headers) server_data[0] = True try: server_data[1] = JSONTools.read_json(url_request.read().decode(OnlineAccount.TEXT_ENCODING)) except ValueError: server_data[1] = None except urllib.error.HTTPError as http_error: server_data[0] = False try: server_data[1] = JSONTools.read_json(http_error.read().decode(OnlineAccount.TEXT_ENCODING)) except ValueError: server_data[1] = None return server_data
def download_versions(self): ''' Downloads the latest versions.json from the official servers ''' tmp_file_object = URL("versions/versions.json", URL.DOWNLOAD).url_object() self.versions_json = JSONTools.read_json(tmp_file_object.read().decode("UTF-8"))