hyperboria/nexus/pylon/resolvers/template.py

41 lines
1.2 KiB
Python

from typing import (
AsyncIterable,
List,
Optional,
)
from nexus.pylon.prepared_request import PreparedRequest
from nexus.pylon.proxy_manager import ProxyManager
from nexus.pylon.resolvers.base import BaseResolver
class TemplateResolver(BaseResolver):
def __init__(
self,
format_string: str = 'https://doi.org/{doi}',
timeout: float = 10.0,
method: str = 'GET',
headers: Optional[dict] = None,
headers_override: bool = False,
proxy_list: Optional[List] = None,
proxy_manager: Optional[ProxyManager] = None,
):
super().__init__(proxy_list=proxy_list, proxy_manager=proxy_manager)
self.format_string = format_string
self.timeout = timeout
self.method = method
self.headers = headers
self.headers_override = headers_override
def __str__(self):
return f'{self.__class__.__name__}({self.format_string})'
async def resolve(self, params) -> AsyncIterable[PreparedRequest]:
yield PreparedRequest(
method=self.method,
url=self.format_string.format(**params),
timeout=self.timeout,
headers=self.headers,
headers_override=self.headers_override,
)