示例#1
0
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)
示例#2
0
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
示例#3
0
def is_schema_validated(xmlfile):
    logger.debug("VALIDATING %s", xmlfile)

    xsd_doc = etree.parse("taric3.xsd")
    xsd = etree.XMLSchema(xsd_doc)

    try:
        xml = etree.parse(io.BytesIO(read_file(xmlfile)))

    except Exception:  # pylint: disable=W0703
        logger.info("Unable to parse file as XML")
        return False

    if not xsd.validate(xml):
        logger.info("XML Failed validation")
        logger.debug("%s", xsd.error_log)
    else:
        logger.info("XML validates against taric3 schema")

    return xsd.validate(xml)