Source code for jp_diet_search.client

from __future__ import annotations

from pathlib import Path
from typing import Any, Dict, Optional

import requests

from .core import BASE_URL, _DietCore
from .endpoints import MeetingEndpoint, MeetingListEndpoint, SpeechEndpoint
from .queries import MeetingListQuery, MeetingQuery, SpeechQuery


[docs] class DietClient: """Object API client for the NDL Diet Records API.""" def __init__( self, *, base_url: str = BASE_URL, user_agent: str = "jp-diet-search", timeout: float = 20.0, sleep_seconds: float = 0.0, cache_dir: str | Path | None = None, session: requests.Session | None = None, ) -> None: self._core = _DietCore( base_url=base_url, user_agent=user_agent, timeout=timeout, sleep_seconds=sleep_seconds, cache_dir=cache_dir, session=session, ) self.meeting_list = MeetingListEndpoint(self._core) self.meeting = MeetingEndpoint(self._core) self.speech = SpeechEndpoint(self._core) # ---------------- legacy-compatible methods ---------------- # These keep your original "dict-of-params" calls working, but forward to the object API.
[docs] def search_meeting_list(self, limit_total: Optional[int] = None, **params: Any) -> Dict[str, Any]: q = MeetingListQuery.model_validate(params) return self.meeting_list.search(q, limit_total=limit_total)
[docs] def search_meeting(self, limit_total: Optional[int] = None, **params: Any) -> Dict[str, Any]: q = MeetingQuery.model_validate(params) return self.meeting.search(q, limit_total=limit_total)
[docs] def search_speech(self, limit_total: Optional[int] = None, **params: Any) -> Dict[str, Any]: q = SpeechQuery.model_validate(params) return self.speech.search(q, limit_total=limit_total)
# Backward-compatible alias (if you had this name in older versions) DietSearchClient = DietClient