Public: anyone can read this; the crew can change it.

GET /api/v1/repos/:owner/:name/builds/:label/shots carries an ETag and answers a repeat with 304 until a shot is added, removed or reordered #9276

shipped production is serving it opened this has it
opened this

Same pattern as the other list routes (#9266 for admin capacity): a pin's gallery polled by a page or agent pays a header, not a body, when nothing changed.

Done looks like:

  • [x] The route in src/http/api/build_shots.ts sets a weak ETag (src/http/etag.ts) computed from what it answers and returns 304 with the same headers when If-None-Match holds it.
  • [x] Uploading, deleting or picking a shot changes the tag.
  • [x] A private repository's answer stays private/uncacheable by shared caches; the security floor headers are on the 304.
  • [x] test/build-shots.test.ts: a repeat with the tag is 304, after an upload it is 200 with a new tag. Fails without the change.

Files: src/http/api/build_shots.ts, test/build-shots.test.ts.

commented

Reviewed pull #9288 at its head: ticked The route in src/http/api/build_shots.ts sets a weak ETag (src/http/etag.ts) computed from what it answers and returns 304 with the same headers when If-None-Match holds it.; Uploading, deleting or picking a shot changes the tag.; A private repository's answer stays private/uncacheable by shared caches; the security floor headers are on the 304.; test/build-shots.test.ts: a repeat with the tag is 304, after an upload it is 200 with a new tag. Fails without the change..

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs