Skip to content

Commit

Permalink
getDefaultConfig takes new parameter for required API key
Browse files Browse the repository at this point in the history
  • Loading branch information
justinkaseman committed Feb 3, 2021
1 parent 9ad5695 commit c6fc972
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 21 deletions.
8 changes: 8 additions & 0 deletions bootstrap/src/lib/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,14 @@ export const toObjectWithNumbers = (obj: any) => {
return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, toNumber(v)]))
}

// pick a random string from env var after splitting with the delimiter ("a&b&c" "&" -> choice(["a","b","c"]))
export const getRandomEnv = (name: string, delimiter = ',', prefix = '') => {
const val = getEnv(name, prefix)
if (!val) return val
const items = val.split(delimiter)
return items[Math.floor(Math.random() * items.length)]
}

// pick a random string from env var after splitting with the delimiter ("a&b&c" "&" -> choice(["a","b","c"]))
export const getRandomRequiredEnv = (name: string, delimiter = ',', prefix = '') => {
const val = getRequiredEnv(name, prefix)
Expand Down
5 changes: 4 additions & 1 deletion coinmarketcap/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@ export const DEFAULT_ENDPOINT = 'price'
const DEFAULT_API_ENDPOINT = 'https://pro-api.coinmarketcap.com/v1/'

export const makeConfig = (prefix?: string): Config => {
const config = Requester.getDefaultConfig(prefix)
const config = Requester.getDefaultConfig(prefix, true)
config.api.baseURL = config.api.baseUrl || DEFAULT_API_ENDPOINT
config.api.headers = {
'X-CMC_PRO_API_KEY': config.apiKey,
}
return config
}
6 changes: 0 additions & 6 deletions coinmarketcap/src/endpoint/dominance.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { util } from '@chainlink/ea-bootstrap'
import { Requester, Validator } from '@chainlink/external-adapter'
import { ExecuteWithConfig, Config } from '@chainlink/types'

Expand All @@ -16,14 +15,9 @@ export const execute: ExecuteWithConfig<Config> = async (request, config) => {

const url = 'global-metrics/quotes/latest'

const headers = {
'X-CMC_PRO_API_KEY': util.getRandomRequiredEnv('API_KEY'),
}

const options = {
...config.api,
url,
headers,
}

const symbol = validator.validated.data.market.toLowerCase()
Expand Down
5 changes: 0 additions & 5 deletions coinmarketcap/src/endpoint/marketcap.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { util } from '@chainlink/ea-bootstrap'
import { Requester, Validator } from '@chainlink/external-adapter'
import { ExecuteWithConfig, Config } from '@chainlink/types'

Expand All @@ -18,15 +17,11 @@ export const execute: ExecuteWithConfig<Config> = async (request, config) => {
const url = '/global-metrics/quotes/latest'

const params = { convert }
const headers = {
'X-CMC_PRO_API_KEY': util.getRandomRequiredEnv('API_KEY'),
}

const options = {
...config.api,
url,
params,
headers,
}
const response = await Requester.request(options)
const result = Requester.validateResultNumber(response.data, [
Expand Down
4 changes: 0 additions & 4 deletions coinmarketcap/src/endpoint/price.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import { util } from '@chainlink/ea-bootstrap'
import { Requester, Validator } from '@chainlink/external-adapter'
import { ExecuteWithConfig, Config } from '@chainlink/types'

Expand Down Expand Up @@ -61,9 +60,6 @@ export const execute: ExecuteWithConfig<Config> = async (request, config) => {
const options = {
...config.api,
url,
headers: {
'X-CMC_PRO_API_KEY': util.getRandomRequiredEnv('API_KEY'),
},
params,
}
const response = await Requester.request(options)
Expand Down
2 changes: 1 addition & 1 deletion coinmarketcap/test/dominance.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { makeExecute } from '../src/adapter'
describe('execute', () => {
const jobID = '1'
const execute = makeExecute()
process.env.API_KEY = process.env.API_KEY ?? 'test_api_key'
// process.env.API_KEY = process.env.API_KEY ?? 'test_api_key'

context('successful calls @integration', () => {
const requests = [
Expand Down
2 changes: 1 addition & 1 deletion coinmarketcap/test/marketcap.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { makeExecute } from '../src/adapter'
describe('execute', () => {
const jobID = '1'
const execute = makeExecute()
process.env.API_KEY = process.env.API_KEY ?? 'test_api_key'
// process.env.API_KEY = process.env.API_KEY ?? 'test_api_key'

context('successful calls @integration', () => {
const requests = [
Expand Down
2 changes: 1 addition & 1 deletion coinmarketcap/test/price.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { makeExecute } from '../src/adapter'
describe('execute', () => {
const jobID = '1'
const execute = makeExecute()
process.env.API_KEY = process.env.API_KEY ?? 'test_api_key'
// process.env.API_KEY = process.env.API_KEY ?? 'test_api_key'

context('successful calls @integration', () => {
const requests = [
Expand Down
6 changes: 4 additions & 2 deletions external-adapter/src/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ export const constants = {
/* eslint-disable @typescript-eslint/no-unused-vars */
const cloneNoSecrets = (config: Config): Config => (({ apiKey, ...o }) => o)(config)

export function getDefaultConfig(prefix = ''): Config {
const apiKey = util.getEnv(ENV_API_KEY, prefix)
export function getDefaultConfig(prefix = '', requireKey = false): Config {
const apiKey = requireKey
? util.getRandomRequiredEnv(ENV_API_KEY, ',', prefix)
: util.getRandomEnv(ENV_API_KEY, ',', prefix)
const timeout = util.getEnv(ENV_API_TIMEOUT, prefix)
return {
apiKey,
Expand Down

0 comments on commit c6fc972

Please sign in to comment.