youtube-summarizer/venv311/lib/python3.11/site-packages/jsonschema_path/handlers/requests.py

36 lines
1.0 KiB
Python

"""JSONSchema spec handlers requests module."""
from contextlib import closing
from io import StringIO
from typing import ContextManager
from typing import Optional
from typing import Union
import requests
from jsonschema_path.handlers.file import BaseFilePathHandler
from jsonschema_path.handlers.file import FileHandler
from jsonschema_path.handlers.protocols import SupportsRead
class UrlRequestsHandler(BaseFilePathHandler):
"""URL (requests) scheme handler."""
def __init__(
self,
*allowed_schemes: str,
file_handler: Optional[FileHandler] = None,
timeout: int = 10,
verify: Optional[Union[bool, str]] = True,
):
super().__init__(*allowed_schemes, file_handler=file_handler)
self.timeout = timeout
self.verify = verify
def _open(self, uri: str) -> ContextManager[SupportsRead]:
response = requests.get(uri, timeout=self.timeout, verify=self.verify)
response.raise_for_status()
data = StringIO(response.text)
return closing(data)