def replay_smtp(uid): """ Replay a previously recorded preset, and save the request in history. Update the mock server identified by ``uid``. :returns: An HTTP response * Status Code 200 containing json data found in preset. * Status Code 404 if there are no matching presets. """ # Make a note that this mock server is still in use. pretender.keep_alive('smtp', uid) bottle.response.content_type = 'application/json' selected = replay(uid, bottle.request.body.read().decode('ascii')) return selected.as_json()
def replay_http(uid, url): """ Replay a previously recorded preset, and save the request in history """ 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)
def replay(uid): """ Replay a previously recorded preset, and save the request in history. Update the mock server identified by ``uid``. :returns: An HTTP response * Status Code 200 containing json data found in preset. * Status Code 404 if there are no matching presets. """ # Make a note that this mock server is still in use. pretender.keep_alive(uid) if preset_count(uid) == 0: raise HTTPResponse(b"No preset response", status=404) mock_request = json.loads(bottle.request.body.read().decode('ascii')) LOGGER.debug('[UID:{0}] Saving history:\n{1}'.format(uid, mock_request)) save_history(uid, mock_request) selected = select_preset(uid, mock_request['match']) bottle.response.content_type = 'application/json' return selected.as_json()