Skip to content

feat(services): blob storage upload client + upload policy#1109

Merged
bmc08gt merged 1 commit into
code/cashfrom
feat/blob-storage-services
Jul 21, 2026
Merged

feat(services): blob storage upload client + upload policy#1109
bmc08gt merged 1 commit into
code/cashfrom
feat/blob-storage-services

Conversation

@bmc08gt

@bmc08gt bmc08gt commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Stacked PR 1/5 — base: `code/cash`

Foundation for direct-to-storage (presigned) blob uploads at the services layer.

What

  • `BlobStorage` gRPC client: Api → Service → Repository → Controller.
  • `HttpBlobUploader` (OkHttp PUT/POST to presigned URLs).
  • Domain models: `UploadTarget`/`UploadReservation`, `UploadPolicy` (MIME + image constraints) with proto converters.
  • `BlobStorageController.upload()` coordinates the whole handshake behind one call: reserve → upload → complete → poll until READY. `getUploadPolicy()` exposes accepted MIME/size constraints.
  • Error types + DI wiring.

Tests

  • `UploadPolicyTest` (constraint matching), `BlobStorageControllerTest` (upload orchestration + failure paths).

Nothing is wired into the UI yet — later PRs in the stack consume this.

Adds the client wrapper for the BlobStorage gRPC service (direct-to-storage
presigned uploads): Api/Service/Repository/Controller, an HTTP BlobUploader,
the UploadTarget/UploadPolicy domain models + proto converters, error types,
and DI wiring. BlobStorageController.upload() coordinates the full handshake
(reserve -> PUT/POST -> complete -> poll until READY) behind one call, and
getUploadPolicy() exposes the accepted MIME/size constraints.

Covered by UploadPolicyTest and BlobStorageControllerTest.

Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
@github-actions github-actions Bot added type: feature New functionality area: network gRPC, connectivity, API, exchange rates and removed type: feature New functionality labels Jul 21, 2026
@bmc08gt
bmc08gt merged commit a72d540 into code/cash Jul 21, 2026
3 checks passed
@bmc08gt
bmc08gt deleted the feat/blob-storage-services branch July 21, 2026 23:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: network gRPC, connectivity, API, exchange rates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant