def load(filename): """Load clues from file. :param filename: Name of the files where the clues are stored. @type filename: C{str} :return: Clues extracted from the file. @rtype: C{list} @raise InvalidFile: In case there's a problem while reinterpreting the clues. """ cluefp = open(filename, 'r') reader = csv.reader(cluefp) clues = [] for tup in reader: try: count, localtime, headers = tup except ValueError: raise InvalidFile('Cannot unpack fields') # Recreate the current clue. clue = Clue() try: clue._count = int(count) clue._local = float(localtime) except ValueError: raise InvalidFile('Could not convert fields') # This may be risky from a security standpoint. clue.headers = eval(headers, {}, {}) if not (isinstance(clue.headers, types.ListType) or isinstance(clue.headers, types.TupleType)): raise InvalidFile('Wrong clue header field') clue.parse(clue.headers) clues.append(clue) cluefp.close() return clues
def setUp(self): self.clue = Clue() self.clue.setTimestamp(100) self.clue.headers = eval(r"""[ ('Date', ' Tue, 24 Feb 2004 17:09:05 GMT'), ('Server', ' Apache/2.0.48 (Unix) DAV/2 SVN/0.35.1'), ('Content-Location', ' index.html.en'), ('Vary', ' negotiate,accept-language,accept-charset'), ('TCN', ' choice'), ('Last-Modified', ' Sat, 22 Nov 2003 15:56:12 GMT'), ('ETag', ' "252ff0-5b0-3b5aff00;253006-961-3b5aff00"'), ('Accept-Ranges', ' bytes'), ('Content-Length', ' 1456'), ('Keep-Alive', ' timeout=15, max=100'), ('Connection', ' Keep-Alive'), ('Content-Type', ' text/html; charset=ISO-8859-1'), ('Content-Language', ' en') ]""") self.clue.parse(self.clue.headers) self.filename = os.path.join('tests', 'data', 'test.clues')
def setUp(self): self.clue = Clue()