Fix HTTP client database path encoding #1321
Open
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.
Fixes a bug where the HTTP client fails against databases/branches whose names contain
/(such aspreview/pr-662ordev/riley) because the database identifier is interpolated directly into/db/${database}/...URLs without encoding, causing the server to interpret/as path separators and return 404.Changes
packages/gel/src/utils.ts#getAuthenticatedFetch, percent-encode the database/branch identifier before constructing the/db/...URL:baseUrlfromprotocolandaddressas before.encodedDatabase = encodeURIComponent(database).databaseUrlusingencodedDatabasefor the/db/${encodedDatabase}/...path segment.packages/gel/test/client.test.ts(under the existingbinary-over-httpfeature gate) that:globalThis.fetch.getAuthenticatedFetchwithdatabase: "preview/pr-662"and valid connection options.authenticatedFetch./db/preview%2Fpr-662/.globalThis.fetch.Rationale
/.dev/<user>orpreview/pr-<number>with the HTTP client.Testing
Locally (against the
rileytomasek/gel-jsfork):yarn install --frozen-lockfileyarn turbo run typecheck --filter=gel(pass)yarn turbo run lint --filter=gel(pass)yarn turbo run test --filter=gelglobalSetupbecause the Gel/EdgeDB server binary (GEL_SERVER_BIN/edgedb-server) is not available.Fixes #1320.