예제 #1
0
    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
예제 #2
0
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)
예제 #3
0
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)