Rindle.Storage.GCS (Rindle v0.1.5)

Copy Markdown View Source

Google Cloud Storage adapter using goth ~> 1.4 (auth) + finch ~> 0.21 (HTTP) + gcs_signed_url ~> 0.4.6 (V4 signing).

Setup

Add Goth and Finch to your supervision tree (Rindle does not start them):

children = [
  {Goth, name: MyApp.Goth, source: {:service_account, json_creds}},
  {Finch, name: MyApp.Finch}
]

Configure the adapter:

config :rindle, Rindle.Storage.GCS,
  bucket: "my-bucket",
  goth: MyApp.Goth,
  finch: MyApp.Finch,
  signing_key: System.fetch_env!("GCS_SERVICE_ACCOUNT_JSON") |> Jason.decode!(),
  signed_url_ttl: 3600

Capabilities

This adapter advertises [:signed_url, :head, :resumable_upload, :resumable_upload_session]. :resumable_upload covers broker-owned initiation plus adapter-side completion verification; the session-scoped atom widens that to remote status and cancel operations.

See guides/storage_gcs.md (forthcoming) for the full setup walk-through, including service-account JSON wiring, signed-URL lifecycle, and the Active-Storage-derived lesson that Content-Disposition / Content-Type live in GCS object metadata at upload time (NOT in V4 signed URL query params).