def _rebuild_index(): if not file_exists(get_taric_index_file()) or nocheck: logger.info("*** Rebuilding file index... ***") all_deltas = [] files = get_file_list(None) logger.info("%s", files) for file in files: # build entry for file just uploaded # TODO (possibly) Add Metadata generation -> then could have api /taricfilemd/... # TODO - combine with individual update_index.. f = file["Key"] f = f[f.rindex("/") + 1:] # remove folder prefix logger.info("Found file %s", f) if f.startswith("TEMP_"): logger.info("Removing temporary file %s", f) seq = f[5: -4] # remove TEMP_ file prefix and .xml extension remove_temp_taric_file(seq) else: if is_valid_seq(f[:-4]): # ignore non taric files seq = f[:-4] # remove .xml extension all_deltas.append(create_index_entry(seq)) logger.debug("%s delta files listed after update", str(len(all_deltas))) # persist updated index all_deltass = json.dumps(all_deltas) write_file(get_taric_index_file(), all_deltass) logger.info("Index rebuild complete")
def update_index(seq): all_deltas = json.loads(read_file(get_taric_index_file())) logger.debug("%s delta files listed in %s", str(len(all_deltas)), get_taric_index_file()) # build entry for file just uploaded # TODO (possibly) Add Metadata file generation -> then could have api /taricfilesmd/... # if the file was overwritten, just update the index, else append existing = [d for d in all_deltas if d["id"] == int(seq)] if len(existing) > 0: logger.info("File %s overwritten", seq) i = 0 for d in all_deltas: logger.debug("%s", d) if d["id"] == int(seq): all_deltas[i] = create_index_entry(seq) i = i + 1 else: all_deltas.append(create_index_entry(seq)) logger.debug("%s delta files listed after update", str(len(all_deltas))) # persist updated index all_deltass = json.dumps(all_deltas) write_file(get_taric_index_file(), all_deltass)
def taricdeltas(date): # Default to yesterday if date == '' or date is None: yesterday = datetime.datetime.now() - datetime.timedelta(days=1) date = yesterday.strftime('%Y-%m-%d') logger.info("defaulted date to " + date) if not is_valid_date(date): logger.info("date is invalid") return Response("Bad request [invalid date] (400)", status=400) if not is_auth(request): logger.info("API key not provided or not authorised") return Response("403 Unauthorised", status=403) logger.debug("date is " + date) # All Taric files uploaded are stored in the index # Find files that have the issue date the same as the requested date # Output the response filtered by the date all_deltas = json.loads(read_file(get_taric_index_file())) logger.debug( str(len(all_deltas)) + " delta files listed in " + get_taric_index_file()) deltas_on_date = [ d for d in all_deltas if d['issue_date'].startswith(date) ] if len(deltas_on_date) == 0: logger.info("No delta files available for date " + date) return Response("404 Not found", status=404) logger.debug(str(len(deltas_on_date)) + " delta files for date " + date) deltas_json = json.dumps(deltas_on_date) r = make_response(deltas_json) r.headers.set('Content-Type', 'application/json') return r