Crosswake.Companions.Rindle.Contracts (crosswake v0.1.2)

View Source

Typed media seam contracts for the first-party Rindle companion.

These structs model server-issued upload grants, device capture evidence, and backend-owned media availability state. Device evidence can report an upload; it cannot directly make media available.

Summary

Functions

canonical_capture_evidence_source(source)

@spec canonical_capture_evidence_source(term()) ::
  {:ok, Crosswake.Companions.Rindle.Contracts.CaptureEvidence.source()}
  | {:error, {:invalid_source, keyword()}}

capture_evidence_source_vocabulary()

@spec capture_evidence_source_vocabulary() :: [
  Crosswake.Companions.Rindle.Contracts.CaptureEvidence.source()
]

media_state_vocabulary()

@spec media_state_vocabulary() :: [
  Crosswake.Companions.Rindle.Contracts.MediaObject.state()
]

new_capture_evidence(attrs)

@spec new_capture_evidence(map() | keyword()) ::
  {:ok, Crosswake.Companions.Rindle.Contracts.CaptureEvidence.t()}
  | {:error, keyword()}

new_media_object(attrs)

@spec new_media_object(map() | keyword()) ::
  {:ok, Crosswake.Companions.Rindle.Contracts.MediaObject.t()}
  | {:error, keyword()}

new_upload_grant(attrs)

@spec new_upload_grant(map() | keyword()) ::
  {:ok, Crosswake.Companions.Rindle.Contracts.UploadGrant.t()}
  | {:error, keyword()}

validate_capture_evidence(evidence)

@spec validate_capture_evidence(
  Crosswake.Companions.Rindle.Contracts.CaptureEvidence.t()
) ::
  :ok | {:error, keyword()}

validate_media_object(media_object)

@spec validate_media_object(Crosswake.Companions.Rindle.Contracts.MediaObject.t()) ::
  :ok | {:error, keyword()}

validate_upload_grant(grant)

@spec validate_upload_grant(Crosswake.Companions.Rindle.Contracts.UploadGrant.t()) ::
  :ok | {:error, keyword()}

verified_media_object(media_object, opts)

@spec verified_media_object(
  Crosswake.Companions.Rindle.Contracts.MediaObject.t(),
  keyword()
) ::
  {:ok, Crosswake.Companions.Rindle.Contracts.MediaObject.t()}
  | {:error, :backend_verification_required | {:invalid_source_state, term()}}