def urlopen(path, data=None, code=http.OK): url = server_url + path json_data = data and json.encode(data) or None req = urllib.Request(url, json_data, headers) response = None while True: # try connecting until server is up try: response = urllib.urlopen(req) break except urllib.HTTPError, he: # anything but 200 OK raises HTTPError # so look for desired response code here if he.code == code: return json.decode(he.read()) raise except urllib.URLError, ue: if ue.reason.args[0] in (10061, 111): # connection refused # wait for server to be up time.sleep(0.5) continue raise
def encode_decode_datetime(self, d): s = json.encode(d) self.assertEquals(s, u'"%s"' % (str(d)[:-7])) d2 = json.decode(s) self.assertEquals(d2, unicode(d)[:-7])
def encode_decode_decimal(self, d): s = json.encode(d) self.assertEquals(s, u'"%s"' % d) d2 = json.decode(s) self.assertEquals(d2, unicode(d))
def encode_response(response): # twisted web expects regular str, which encode('utf-8') gives return json.encode(response).encode('utf-8')