# Copyright (c) Fraunhofer FOKUS
#
# This program and the accompanying materials are made available under the
# terms of the Apache License, Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0

import requests as r
import logging as log
import logging

logging.basicConfig(format="%(levelname)s - %(message)s", level=logging.DEBUG)

BASE_URL = "https://data.europa.eu/api/mqa/cache"

def create_catalog_statistic():
    params = {"startDate": "2022-01-01"}
    result = r.get(BASE_URL + "/catalogues/history", params=params).json()

    log.info("Found %d catalogs" % result["result"]["count"])
    catl = result["result"]["results"]

    catalogs = []
    dates = set()
    sorted_dates = []

    log.info(dates)
    for c in catl:
        cat_dict = {
            "title": c["info"]["title"],
            "id": c["info"]["id"]
        }

        for s in c["score"]:
            for key in s:
                dates.add(key)
                cat_dict[key] = s[key]

        cat_dict["accessibility"] = {}
        for a in c["accessibility"]["score"]:
            for _ in a:
                cat_dict["accessibility"][a["date"][:7]] = a["value"]["points"]

        cat_dict["contextuality"] = {}
        for a in c["contextuality"]["score"]:
            for _ in a:
                cat_dict["contextuality"][a["date"][:7]] = a["value"]["points"]

        cat_dict["findability"] = {}
        for a in c["findability"]["score"]:
            for _ in a:
                cat_dict["findability"][a["date"][:7]] = a["value"]["points"]

        cat_dict["interoperability"] = {}
        for a in c["interoperability"]["score"]:
            for _ in a:
                cat_dict["interoperability"][a["date"][:7]] = a["value"]["points"]

        cat_dict["reusability"] = {}
        for a in c["reusability"]["score"]:
            for _ in a:
                cat_dict["reusability"][a["date"][:7]] = a["value"]["points"]

        catalogs.append(cat_dict)

        log.info(cat_dict)
        sorted_dates = sorted(dates)

    # Set header
    header_line = "title;id;"
    for date in sorted_dates:
        header_line += str(date) + ";"
        header_line += str(date) + " accessibility;"
        header_line += str(date) + " contextuality;"
        header_line += str(date) + " findability;"
        header_line += str(date) + " interoperability;"
        header_line += str(date) + " reusability;"

    print(header_line)

    for c in catalogs:
        result_line = ""
        result_line += c["title"] + ";"
        result_line += c["id"] + ";"
        for d in sorted_dates:
            if d in c:
                result_line += str(c[d]) + ";"
                result_line += str(c["accessibility"][d]) + ";"
                result_line += str(c["contextuality"][d]) + ";"
                result_line += str(c["findability"][d]) + ";"
                result_line += str(c["interoperability"][d]) + ";"
                result_line += str(c["reusability"][d]) + ";"
            else:
                result_line += ";;;;;;"
        print(result_line)


create_catalog_statistic()




