def add(self, match_rule=None, response_status=200, response_body=b'', response_headers={}, times=1, after=0): """ Add a new preset to the boss server. """ try: new_preset = Preset( headers=response_headers, body=binary_to_ascii(response_body), status=response_status, rule=match_rule, times=times, after=after ) print (self.path) print (new_preset.as_json()) response, data = self.http('POST', url=self.path, body=new_preset.as_json()) print (response.status) print (response.read()) print (data) if response.status != 200: raise ConfigurationError(data.decode()) except: traceback.print_exc(file=sys.stdout) return response
def replay_http(url): """ New Replay route for global apps """ uid = 'global' pretender.exists_or_404('http', uid) request_info = RequestSerialiser(url, bottle.request) body = request_info.serialize() LOGGER.debug("KEEPING UID {0} ALIVE".format(uid)) pretender.keep_alive('http', uid) boss_response = replay(uid, body) preset = Preset(boss_response.as_json().encode('ascii')) return preset.as_http_response(bottle.response)
def replay_http(uid, url): """ Replay a previously recorded preset, and save the request in history """ pretender.exists_or_404('http', uid) request_info = RequestSerialiser(url, bottle.request) body = request_info.serialize() LOGGER.debug("KEEPING UID {0} ALIVE".format(uid)) pretender.keep_alive('http', uid) boss_response = replay(uid, body) preset = Preset(boss_response.as_json().encode('ascii')) # ^ Any suggestions about what we can do here? # Preset expects a string like object that can be decoded. # in py3k that means a 'bytes' object. in py2.X that means a string. # So the above works, but it looks ugly - ideally we'd handle both in # Preset constructor. return preset.as_http_response(bottle.response)