61 lines
1.1 KiB
Python
61 lines
1.1 KiB
Python
![]() |
from abc import ABC, abstractmethod
|
||
|
|
||
|
|
||
|
|
||
|
TYPE_KEY = "oss_type_key"
|
||
|
|
||
|
|
||
|
class StorageConfig(ABC):
|
||
|
|
||
|
@classmethod
|
||
|
@abstractmethod
|
||
|
def type(cls):
|
||
|
"""返回实现类的类型"""
|
||
|
pass
|
||
|
|
||
|
@classmethod
|
||
|
@abstractmethod
|
||
|
def describe(cls):
|
||
|
"""返回对象存储的描述"""
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def get_config(self):
|
||
|
"""返回存储配置的字典"""
|
||
|
pass
|
||
|
|
||
|
@abstractmethod
|
||
|
def validate_config(self):
|
||
|
"""验证配置是否合法"""
|
||
|
pass
|
||
|
|
||
|
@classmethod
|
||
|
@abstractmethod
|
||
|
def value_of(cls, config: dict):
|
||
|
pass
|
||
|
|
||
|
@classmethod
|
||
|
@abstractmethod
|
||
|
def isSupported(cls, path: str) -> bool:
|
||
|
pass
|
||
|
|
||
|
|
||
|
class DescriptionBuilder:
|
||
|
LABEL = "label"
|
||
|
PLACEHOLDER = "placeholder"
|
||
|
KEY = "key"
|
||
|
|
||
|
def __init__(self):
|
||
|
self.description = []
|
||
|
|
||
|
def add_description(self, label, placeholder, key):
|
||
|
self.description.append({
|
||
|
self.LABEL: label,
|
||
|
self.PLACEHOLDER: placeholder,
|
||
|
self.KEY: key
|
||
|
})
|
||
|
return self
|
||
|
|
||
|
def build(self):
|
||
|
return self.description
|