19 lines
688 B
Python
19 lines
688 B
Python
class CachedPipelineFactory:
|
|
def __init__(self, base_url, pipeline_factory):
|
|
self.base_url = base_url
|
|
self.operation2pipeline = {}
|
|
self.pipeline_factory = pipeline_factory
|
|
|
|
def get_pipeline(self, operation: str):
|
|
pipeline = self.operation2pipeline.get(operation, None) or self.__register_pipeline(operation)
|
|
return pipeline
|
|
|
|
def __register_pipeline(self, operation):
|
|
endpoint = self.__make_endpoint(operation)
|
|
pipeline = self.pipeline_factory(endpoint)
|
|
self.operation2pipeline[operation] = pipeline
|
|
return pipeline
|
|
|
|
def __make_endpoint(self, operation):
|
|
return f"{self.base_url}/{operation}"
|