"""
----------------------------------------------------------------------------
METADATA:
File: utils.py
Project: paperap
Created: 2025-03-04
Version: 0.0.9
Author: Jess Mann
Email: jess@jmann.me
Copyright (c) 2025 Jess Mann
----------------------------------------------------------------------------
LAST MODIFIED:
2025-03-04 By Jess Mann
"""
from __future__ import annotations
import json
import os
from datetime import datetime
from typing import Any, BinaryIO
[docs]
def datetime_to_str(dt: datetime | None) -> str | None:
"""
Convert a datetime object to an ISO 8601 string for the API.
Args:
dt: The datetime object to convert.
Returns:
ISO 8601 formatted string.
"""
if dt is None:
return None
return dt.isoformat().replace("+00:00", "Z")
[docs]
def parse_filter_params(**kwargs: Any) -> dict[str, Any]:
"""
Parse filter parameters for list endpoints.
Args:
**kwargs: Filter parameters.
Returns:
Dictionary of filter parameters.
"""
filters: dict[str, Any] = {}
for key, value in kwargs.items():
if value is not None:
if isinstance(value, datetime):
filters[key] = datetime_to_str(value)
elif isinstance(value, list):
# Handle list parameters like tags__id__in
filters[key] = ",".join([str(v) for v in value])
else:
filters[key] = value
return filters