| # Copyright (c) 2022 Nordic Semiconductor ASA |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| from abc import ABC, abstractmethod |
| from pathlib import Path |
| from typing import List, Type |
| |
| class ZephyrBlobFetcher(ABC): |
| |
| @staticmethod |
| def get_fetchers() -> List[Type['ZephyrBlobFetcher']]: |
| '''Get a list of all currently defined fetcher classes.''' |
| return ZephyrBlobFetcher.__subclasses__() |
| |
| @classmethod |
| @abstractmethod |
| def schemes(cls) -> List[str]: |
| '''Return this fetcher's schemes.''' |
| |
| @abstractmethod |
| def fetch(self, url: str, path: Path): |
| ''' Fetch a blob and store it ''' |