| 1 | """Parser registry: pick a parser by content type / extension.""" |
| 2 | from __future__ import annotations |
| 3 | |
| 4 | from app.services.parsers.base import BaseParser, ParseResult |
| 5 | from app.services.parsers.csv_flock import CsvFlockParser |
| 6 | from app.services.parsers.json_flock import JsonFlockParser |
| 7 | from app.services.parsers.pdf_report import PdfReportParser |
| 8 | |
| 9 | |
| 10 | def get_parser(filename: str, content_type: str | None = None) -> BaseParser: |
| 11 | name = (filename or "").lower() |
| 12 | ct = (content_type or "").lower() |
| 13 | if name.endswith(".json") or "json" in ct: |
| 14 | return JsonFlockParser() |
| 15 | if name.endswith(".pdf") or "pdf" in ct: |
| 16 | return PdfReportParser() |
| 17 | return CsvFlockParser() |
| 18 | |
| 19 | |
| 20 | __all__ = ["get_parser", "BaseParser", "ParseResult", "CsvFlockParser", "JsonFlockParser", "PdfReportParser"] |