Re-upload: CI infrastructure issue resolved, all tests verified passing
This commit is contained in:
47
http_log_explorer/parsers/factory.py
Normal file
47
http_log_explorer/parsers/factory.py
Normal file
@@ -0,0 +1,47 @@
|
||||
"""Parser factory for creating appropriate parsers."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
from http_log_explorer.parsers.curl_parser import CurlParser
|
||||
from http_log_explorer.parsers.devtools_parser import DevToolsParser
|
||||
from http_log_explorer.parsers.har_parser import HARParser
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from http_log_explorer.parsers import ParserInterface
|
||||
|
||||
|
||||
def get_parser(content: str | bytes) -> ParserInterface:
|
||||
"""Get the appropriate parser for the given content.
|
||||
|
||||
Args:
|
||||
content: The content to parse
|
||||
|
||||
Returns:
|
||||
An appropriate parser instance
|
||||
|
||||
Raises:
|
||||
ValueError: If no suitable parser is found
|
||||
"""
|
||||
parsers = [
|
||||
HARParser(),
|
||||
CurlParser(),
|
||||
DevToolsParser(),
|
||||
]
|
||||
|
||||
for parser in parsers:
|
||||
if parser.can_parse(content):
|
||||
return parser
|
||||
|
||||
raise ValueError(
|
||||
"Unsupported format. Supported formats are: HAR files, curl -v output, and Chrome DevTools network exports."
|
||||
)
|
||||
|
||||
|
||||
def get_all_parsers() -> list[ParserInterface]:
|
||||
"""Get all available parser instances."""
|
||||
return [HARParser(), CurlParser(), DevToolsParser()]
|
||||
|
||||
|
||||
__all__ = ["get_parser", "get_all_parsers"]
|
||||
Reference in New Issue
Block a user