chore(deps): bump multistore to 0.7.0 - #190
Merged
Merged
Conversation
Contributor
|
Claude finished @alukach's task in 1m 6s —— View job Reviewing PR #190: bump multistore to 0.7.0
✅ No blocking issues — safe to merge.
|
|
🚀 Latest commit deployed to https://source-data-proxy-pr-190.source-coop.workers.dev
|
Picks up developmentseed/multistore#115 (0.7.0): STS accepts AssumeRoleWithWebIdentity params from form-encoded POST bodies, conditional-write preconditions on PutObject, same-store CopyObject, plus the object_store 0.14 / reqwest 0.13 / worker unpin upgrade. Knock-on changes required by the dependency upgrades in 0.7.0: - worker/worker-macros =0.7.4 -> =0.7.5 (multistore-cf-workers 0.7.0 requires worker ^0.7.5) - our own reqwest 0.12 -> 0.13 so HTTP_CLIENT's Client type matches the one multistore-sts::jwks::new now expects (single reqwest in the tree) - enable reqwest's new `form` feature: `.form()` became opt-in in 0.13 (was always-on in 0.12); needed for the STS post_form call Verified: cargo check + clippy -D warnings on wasm32, cargo test all pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
alukach
force-pushed
the
chore/bump-multistore-0.7.0
branch
from
July 22, 2026 05:37
c576d5a to
85dbedc
Compare
alukach
marked this pull request as ready for review
July 22, 2026 23:11
alukach
enabled auto-merge (squash)
July 22, 2026 23:23
alukach
disabled auto-merge
July 22, 2026 23:23
alukach
added a commit
that referenced
this pull request
Jul 27, 2026
…dies (#196) AWS SDKs send query-protocol operations as a form-encoded `POST` body with no query string at all, but the worker only ever surfaced the query string to the router. The STS handler reads its parameters from `RequestInfo::form_body`, which stayed `None`, so every SDK-shaped request fell through to the S3 pipeline. multistore 0.7.0 ([developmentseed/multistore#112](developmentseed/multistore#112), pulled in by #190) added `RequestParts::absorb_form_body` for exactly this. The dep bump alone does not enable it — the runtime has to call it, which is what this PR does. ## Behavior `POST /.sts` with `Action=AssumeRoleWithWebIdentity&RoleArn=_default&WebIdentityToken=…` in the body: | | before | after | |---|---|---| | response | 400 `InvalidRequest: unsupported POST operation` | routed to the STS handler | Verified locally against `wrangler dev` with the stub API and a throwaway OIDC key, rebuilding the worker each way to confirm the difference is this change and not a stale isolate. ## Safety `absorb_form_body` is a no-op passthrough for every request shape that is not a form-encoded `POST`, and it rebuilds the body from the collected bytes — so a mislabeled S3 write (`Content-Type` is client-controlled: `CompleteMultipartUpload`, `DeleteObjects`) still reaches the gateway with its payload intact. Collection is skipped entirely for a form `POST` with a missing or oversized `Content-Length` rather than buffering it into WASM memory. ## Tests - `test_sts_form_encoded_body_reaches_the_sts_handler` — needs no identity token, so it runs on fork PRs. Asserts the response is an STS rejection (`InvalidIdentityToken`) rather than the S3 fall-through; the status code alone does not discriminate, since both are 400. Fails on `main`. - `test_sts_exchange_accepts_a_form_encoded_body` — the positive path, under the existing `needs_token` gate. Full local integration run: 24 passed, 11 skipped (credentialed tier, no GitHub OIDC token locally). ## Scope Part of #184. This is one of the two blockers for a true SDK drop-in; the other is #185 — AWS SDKs validate `RoleArn` client-side (min 20 chars), so `_default` is rejected before the request is ever sent. Both are needed before `boto3.client("sts", endpoint_url=…)` works unmodified. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps the multistore crate family to 0.7.0, pulling in developmentseed/multistore#115 and the rest of the 0.7.0 release.
What's in 0.7.0
AssumeRoleWithWebIdentityparams from form-encoded POST bodies (#112)PutObject(feat: real-time location WebSocket via Durable Objects #122)CopyObjectviax-amz-copy-source(#121)object_store→ 0.14,reqwest→ 0.13, unpinworker(fix: handle Range header in HEAD requests #114)Knock-on changes required by the dep upgrades
The
object_store/reqwest/workerbumps in 0.7.0 forced a few local adjustments:worker/worker-macros=0.7.4→=0.7.5—multistore-cf-workers0.7.0 requiresworker ^0.7.5reqwest0.12→0.13soHTTP_CLIENT'sClienttype matches the onemultistore-sts::jwks::newnow expects (keeps a singlereqwestin the tree)formfeature —.form()became opt-in in 0.13 (was always-on in 0.12) and is needed for the STSpost_formcall inFetchHttpExchangeVerification
cargo check --target wasm32-unknown-unknown✓cargo clippy --target wasm32-unknown-unknown -- -D warnings✓cargo test— all suites pass ✓🤖 Generated with Claude Code