aurora-is-near / aurora-relayer

[DEPRECATED] Web3-compatible relayer server for Aurora.
https://aurora-is-near.github.io/aurora-relayer/
Creative Commons Zero v1.0 Universal
26 stars 13 forks source link

Support text/plain format in body of request #355

Closed pustovalov closed 1 year ago

pustovalov commented 1 year ago

In ethers v6 they use text/plain for content type of request https://github.com/ethers-io/ethers.js/blob/v6/src.ts/utils/fetch.ts#L221

Reproduce

import { ethers } from 'ethers'

(async () => {
  const provider = new ethers.JsonRpcProvider(env)
  const block = await provider.getBlock('latest')
  console.log('block', block)
})();

This PR

[~/dev/aurora/raw]$ node ethers_v6_aurora_mainnet_json_rpc.js                                                                                                                                      
body {"id":1,"method":"eth_chainId","params":[],"jsonrpc":"2.0"}
typeof (body) string
body [{"method":"eth_chainId","params":[],"id":2,"jsonrpc":"2.0"},{"method":"eth_getBlockByNumber","params":["latest",false],"id":3,"jsonrpc":"2.0"}]
typeof (body) string
block Block {
  provider: JsonRpcProvider {},
  number: 37157807,
  hash: '0x1e0d672829be2dea007905f7a4bdd6dd57a10563ec93215d62093b2ae3557aba',
  timestamp: 1620821235,
  parentHash: '0xfb3eb59c6ed78043a7cd948bba13e4efc35025e5aa1e8fa483b19fd7b6682c47',
  nonce: '0x0000000000000000',
  difficulty: 0n,
  gasLimit: 9007199254740991n,
  gasUsed: 0n,
  miner: '0x0000000000000000000000000000000000000000',
  extraData: '0x',
  baseFeePerGas: null
}

https://mainnet.aurora.dev

[~/dev/aurora/raw]$ node ethers_v6_aurora_mainnet_json_rpc.js                                                                                                                                     
body {"id":1,"method":"eth_chainId","params":[],"jsonrpc":"2.0"}
typeof (body) string
body [{"method":"eth_chainId","params":[],"id":2,"jsonrpc":"2.0"},{"method":"eth_getBlockByNumber","params":["latest",false],"id":3,"jsonrpc":"2.0"}]
typeof (body) string
file:///Users/pavel/dev/aurora/raw/node_modules/.pnpm/ethers@6.0.0-beta-exports.10/node_modules/ethers/lib.esm/utils/errors.js:116
            error = new Error(message);
                    ^

Error: server response 400 Bad Request (request={  }, response={  }, error=null, code=SERVER_ERROR, version=6.0.0-beta-exports.10)
    at makeError (file:///Users/pavel/dev/aurora/raw/node_modules/.pnpm/ethers@6.0.0-beta-exports.10/node_modules/ethers/lib.esm/utils/errors.js:116:21)
    at assert (file:///Users/pavel/dev/aurora/raw/node_modules/.pnpm/ethers@6.0.0-beta-exports.10/node_modules/ethers/lib.esm/utils/errors.js:132:15)
    at FetchResponse.assertOk (file:///Users/pavel/dev/aurora/raw/node_modules/.pnpm/ethers@6.0.0-beta-exports.10/node_modules/ethers/lib.esm/utils/fetch.js:772:9)
    at JsonRpcProvider._send (file:///Users/pavel/dev/aurora/raw/node_modules/.pnpm/ethers@6.0.0-beta-exports.10/node_modules/ethers/lib.esm/providers/provider-jsonrpc.js:815:18)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async JsonRpcProvider._detectNetwork (file:///Users/pavel/dev/aurora/raw/node_modules/.pnpm/ethers@6.0.0-beta-exports.10/node_modules/ethers/lib.esm/providers/provider-jsonrpc.js:359:23)
    at async JsonRpcProvider.getNetwork (file:///Users/pavel/dev/aurora/raw/node_modules/.pnpm/ethers@6.0.0-beta-exports.10/node_modules/ethers/lib.esm/providers/abstract-provider.js:440:21)
    at async Promise.all (index 0)
    at async resolveProperties (file:///Users/pavel/dev/aurora/raw/node_modules/.pnpm/ethers@6.0.0-beta-exports.10/node_modules/ethers/lib.esm/utils/properties.js:33:21)
    at async JsonRpcProvider.getBlock (file:///Users/pavel/dev/aurora/raw/node_modules/.pnpm/ethers@6.0.0-beta-exports.10/node_modules/ethers/lib.esm/providers/abstract-provider.js:630:37) {
  code: 'SERVER_ERROR',
  request: FetchRequest {},
  response: FetchResponse {},
  error: undefined
}
pustovalov commented 1 year ago

Fixed by ethers.js in #e55a87ad