"use strict"; import { Network } from "@ethersproject/networks"; import { UrlJsonRpcProvider } from "./url-json-rpc-provider"; import { Logger } from "@ethersproject/logger"; import { version } from "./_version"; const logger = new Logger(version); // Special API key provided by Nodesmith for ethers.js const defaultApiKey = "ETHERS_JS_SHARED"; export class NodesmithProvider extends UrlJsonRpcProvider { static getApiKey(apiKey: string): string { return apiKey || defaultApiKey; } static getUrl(network: Network, apiKey?: string): string { let host = null; switch (network.name) { case "homestead": host = "https://ethereum.api.nodesmith.io/v1/mainnet/jsonrpc"; break; case "ropsten": host = "https://ethereum.api.nodesmith.io/v1/ropsten/jsonrpc"; break; case "rinkeby": host = "https://ethereum.api.nodesmith.io/v1/rinkeby/jsonrpc"; break; case "goerli": host = "https://ethereum.api.nodesmith.io/v1/goerli/jsonrpc"; break; case "kovan": host = "https://ethereum.api.nodesmith.io/v1/kovan/jsonrpc"; break; default: logger.throwArgumentError("unsupported network", "network", arguments[0]); } return (host + "?apiKey=" + apiKey); } }