fix(view): fix index pages api resolving
This commit is contained in:
@@ -1,21 +1,19 @@
|
||||
from collections import defaultdict
|
||||
|
||||
from .api import API, Api
|
||||
|
||||
|
||||
class ApiBundle:
|
||||
def __init__(self, values: list[Api]):
|
||||
self._values = values
|
||||
self._by_provider = {value.provider: value for value in values}
|
||||
self._providers_by_api = defaultdict(list)
|
||||
self._api_map = {}
|
||||
for value in self._values:
|
||||
self._providers_by_api[value.type].append(value.provider)
|
||||
self._api_map[(value.type, value.provider)] = value
|
||||
|
||||
def get_api_providers(self, api_type: type[API]) -> list[str]:
|
||||
result = []
|
||||
for value in self._values:
|
||||
if isinstance(value, api_type):
|
||||
result.append(value.provider)
|
||||
return result
|
||||
return self._providers_by_api[api_type.TYPE]
|
||||
|
||||
def get_api(self, api_type: type[API], provider: str) -> API:
|
||||
for value in self._values:
|
||||
if isinstance(value, api_type):
|
||||
if provider == value.provider:
|
||||
return value
|
||||
raise ValueError(api_type, provider)
|
||||
return self._api_map[(api_type.TYPE, provider)]
|
||||
|
||||
Reference in New Issue
Block a user