You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
23 lines
628 B
23 lines
628 B
# 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 '''
|
|
|