Source code for cadrumo.adapters.outbound.storage._object_name

"""Provider-neutral object-name presentation helpers.

The local filesystem and Google Drive providers share an operator-facing object
name while retaining their own namespace validation, HMAC admissibility, and
ownership rules. Callers validate those provider-specific constraints before
using this module; these helpers only render a safe, bounded name.
"""

from __future__ import annotations

HMAC_PREFIX_LENGTH = 8
_DEFAULT_LABEL = "object"
LABEL_MAX_LENGTH = 64


[docs] def provider_object_hmac_prefix(object_key_hmac: str) -> str: """Return the fixed-width HMAC prefix used in an operator-visible object name.""" return object_key_hmac[:HMAC_PREFIX_LENGTH]
[docs] def sanitize_provider_object_label(label: str) -> str: """Return the bounded human-readable component of a provider object name.""" cleaned = label.strip() if not cleaned: return _DEFAULT_LABEL safe = "".join(character if character.isalnum() or character in "-_." else "-" for character in cleaned) return safe[:LABEL_MAX_LENGTH] or _DEFAULT_LABEL
[docs] def build_provider_object_name(object_key_hmac: str, label: str, *, extension: str) -> str: """Build ``<hmac-prefix>--<sanitized-label><extension>`` for a provider object.""" return f"{provider_object_hmac_prefix(object_key_hmac)}--{sanitize_provider_object_label(label)}{extension}"