from typing import List, Optional

from bemani.data.api.client import APIClient
from bemani.data.interfaces import APIProviderInterface


class BaseGlobalData:

    def __init__(self, api: APIProviderInterface) -> None:
        self.__localapi = api
        self.__apiclients: Optional[List[APIClient]] = None

    @property
    def clients(self) -> List[APIClient]:
        if self.__apiclients is None:
            servers = self.__localapi.get_all_servers()
            self.__apiclients = [APIClient(server.uri, server.token, server.allow_stats, server.allow_scores) for server in servers]

        return self.__apiclients
