Skip to content

Latest commit

 

History

History
34 lines (27 loc) · 1.44 KB

README.md

File metadata and controls

34 lines (27 loc) · 1.44 KB

files-worker

This repo is a Cloudflare Worker that serves artifact files hosted on Ace Archive from Cloudflare R2.

Artifact metadata is stored in a Cloudflare D1 SQLite database. This worker handles incoming GET and HEAD requests to https://files.acearchive.lgbt, reads the metadata for the artifact from the database, and then serves the file contents from R2.

This worker handles requests of the form:

https://files.acearchive.lgbt/artifacts/<artifact_slug>/<file_name>

The artifact metadata in the database is populated by acearchive/artifact-submit-action. Requesting this metadata in this worker is necessary because objects in R2 are keyed by their hash (more specifically a multihash), so we need to get the hash of the file first.

HTTP range requests and conditional requests are supported, and ETag and Last-Modified headers are returned for caching.

R2 bucket locks are used to ensure that files written to R2 cannot be overwritten or deleted. However, the Cloudflare Terraform provider does not seem to support this API as of time of writing, so this step was taken manually.