class History(object): """ This holds all the response and request objects for a session. A server using this should call "clear" after each request cycle in order to keep it from clogging memory. """ size = 20 requests = [] responses = [] _instance = None @classmethod def instance(cls): if not cls._instance: cls._instance = cls() return cls._instance def add_response(self, response_obj): if self.size == 0: return self.responses.append(response_obj) if self.size > 0: self.responses = self.responses[0 - self.size:] def add_request(self, request_obj): if self.size == 0: return self.requests.append(request_obj) if self.size > 0: self.requests = self.requests[0 - self.size:] @property def request(self): if len(self.requests) == 0: return None else: return self.requests[-1] @property def response(self): if len(self.responses) == 0: return None else: return self.responses[-1] def clear(self): del self.requests[:] del self.responses[:]