24 lines
628 B
Python
24 lines
628 B
Python
|
# 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 '''
|