From e1ea575640fed8d5208477851d26a0c6bd74c11d Mon Sep 17 00:00:00 2001 From: Vasco Santos Date: Thu, 2 Jun 2022 20:16:26 +0100 Subject: [PATCH] fix: re use received headers --- packages/api/package.json | 2 +- packages/api/src/env.js | 7 ------ packages/api/src/perma-cache/post.js | 32 ++++++++++++++++++---------- packages/api/wrangler.toml | 3 --- pnpm-lock.yaml | 2 +- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index 8d44dc14..7b0294f6 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -23,7 +23,6 @@ }, "dependencies": { "@supabase/postgrest-js": "^0.37.2", - "edge-gateway": "^1.5.5", "itty-router": "^2.4.5", "multiformats": "^9.6.4", "nanoid": "^3.1.30", @@ -35,6 +34,7 @@ "ava": "^3.15.0", "browser-env": "^3.3.0", "dotenv": "^16.0.0", + "edge-gateway": "^1.5.5", "esbuild": "^0.14.2", "execa": "^5.1.1", "git-rev-sync": "^3.0.1", diff --git a/packages/api/src/env.js b/packages/api/src/env.js index fa3268a7..294e02a9 100644 --- a/packages/api/src/env.js +++ b/packages/api/src/env.js @@ -57,13 +57,6 @@ export function envAll(request, env, ctx) { env.log = new Logging(request, env, ctx) env.log.time('request') - - /** - * Add gateway environment - * will be removed once workers bindings are in place. - */ - // @ts-ignore types not complete - Special inputs for Env - env.ipfsGateways = JSON.parse(env.IPFS_GATEWAYS) } /** diff --git a/packages/api/src/perma-cache/post.js b/packages/api/src/perma-cache/post.js index c91ed305..3fb4eda2 100644 --- a/packages/api/src/perma-cache/post.js +++ b/packages/api/src/perma-cache/post.js @@ -212,19 +212,29 @@ function validateCacheControlHeader(cacheControl) { * @param {Request} request */ function getHeaders(request) { - const existingProxies = request.headers.get('X-Forwarded-For') - ? `, ${request.headers.get('X-Forwarded-For')}` + const headers = cloneHeaders(request.headers) + const existingProxies = headers.get('X-Forwarded-For') + ? `, ${headers.get('X-Forwarded-For')}` : '' - // TODO: keep headers - // request.headers.set('X-Forwarded-For', `${request.headers.get( - // 'cf-connecting-ip' - // )}${existingProxies}`) + // keep headers + headers.set( + 'X-Forwarded-For', + `${headers.get('cf-connecting-ip')}${existingProxies}` + ) - // return request.headers - return { - 'X-Forwarded-For': `${request.headers.get( - 'cf-connecting-ip' - )}${existingProxies}`, + return headers +} + +/** + * Clone headers to mutate them. + * + * @param {Headers} reqHeaders + */ +function cloneHeaders(reqHeaders) { + const headers = new Headers() + for (var kv of reqHeaders.entries()) { + headers.append(kv[0], kv[1]) } + return headers } diff --git a/packages/api/wrangler.toml b/packages/api/wrangler.toml index de278ab1..a0f2b9bd 100644 --- a/packages/api/wrangler.toml +++ b/packages/api/wrangler.toml @@ -21,7 +21,6 @@ NFT_STORAGE_API = "https://api.nft.storage" DEBUG = "false" ENV = "production" GATEWAY_DOMAIN = "nftstorage.link" -IPFS_GATEWAYS = "[\"https://ipfs.io\", \"https://cf.nftstorage.link\", \"https://nft-storage.mypinata.cloud/\"]" [[env.production.r2_buckets]] bucket_name = "super-hot" @@ -48,7 +47,6 @@ NFT_STORAGE_API = "https://api-staging.nft.storage" DEBUG = "true" ENV = "staging" GATEWAY_DOMAIN = "nftstorage.link" -IPFS_GATEWAYS = "[\"https://ipfs.io\", \"https://cf.nftstorage.link\", \"https://nft-storage.mypinata.cloud/\"]" [[env.staging.r2_buckets]] bucket_name = "super-hot-staging" @@ -68,7 +66,6 @@ workers_dev = true DEBUG = "true" ENV = "test" GATEWAY_DOMAIN = "localhost:9081" -IPFS_GATEWAYS = "[\"http://127.0.0.1:9081\"]" # Dev! [env.vsantos] diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 546b7583..ea83b715 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -50,7 +50,6 @@ importers: uint8arrays: ^3.0.0 dependencies: '@supabase/postgrest-js': 0.37.2 - edge-gateway: link:../edge-gateway itty-router: 2.6.1 multiformats: 9.6.4 nanoid: 3.3.3 @@ -61,6 +60,7 @@ importers: ava: 3.15.0 browser-env: 3.3.0 dotenv: 16.0.0 + edge-gateway: link:../edge-gateway esbuild: 0.14.38 execa: 5.1.1 git-rev-sync: 3.0.2