def METHOD_NAME(self, base_currency, currencies, date_from, date_to):
    self.ensure_one()
    if self.service != "BOI":
        return super().METHOD_NAME(
            base_currency, currencies, date_from, date_to
        )  # pragma: no cover
    invert_calculation = False
    if base_currency != "EUR":
        invert_calculation = True
        if base_currency not in currencies:
            currencies.append(base_currency)
    content = {}
    while date_from <= date_to:
        date_from_str = str(date_from)
        url = (
            "https://tassidicambio.bancaditalia.it/terzevalute-wf-web/"
            "rest/v1.0/dailyRates?referenceDate={ref_date}"
            "&currencyIsoCode={ref_cur}&lang={lang}".format(
                ref_date=date_from_str,
                ref_cur="EUR",
                lang="EN",
            )
        )
        response = requests.get(url, headers={"Accept": "application/json"})
        curr_dict = response.content
        content[date_from_str] = {}
        for row in safe_eval(curr_dict)["rates"]:
            if row["isoCode"] in currencies:
                content[date_from_str][row["isoCode"]] = row["avgRate"]
        date_from += timedelta(days=1)
    if invert_calculation:
        for k in content.keys():
            base_rate = float(content[k][base_currency])
            for rate in content[k].keys():
                content[k][rate] = str(float(content[k][rate]) / base_rate)
            content[k]["EUR"] = str(1.0 / base_rate)
    return content