● Zion Boggan
repos/Sightline/backend/app/services/parsers/__init__.py
zionboggan.com ↗
20 lines · python
History for this file →
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"]