blob: 9723880a4583d68de700e628cd5e7bba8a3c8213 (
plain) (
tree)
|
|
import * as R from 'ramda';
import { RelayerResponse, RelayerResponseNetwork } from '../../data_sources/relayer-registry';
import { Relayer } from '../../entities';
/**
* Parses a raw relayer registry response into an array of Relayer entities.
* @param rawResp raw response from the relayer-registry json file.
*/
export function parseRelayers(rawResp: Map<string, RelayerResponse>): Relayer[] {
const parsedAsObject = R.mapObjIndexed(parseRelayer, rawResp);
return R.values(parsedAsObject);
}
function parseRelayer(relayerResp: RelayerResponse, uuid: string): Relayer {
const relayer = new Relayer();
relayer.uuid = uuid;
relayer.name = relayerResp.name;
relayer.homepageUrl = relayerResp.homepage_url;
relayer.appUrl = relayerResp.app_url;
const mainNetworkRelayerInfo = getMainNetwork(relayerResp);
if (mainNetworkRelayerInfo !== undefined) {
relayer.sraHttpEndpoint = mainNetworkRelayerInfo.sra_http_endpoint || null;
relayer.sraWsEndpoint = mainNetworkRelayerInfo.sra_ws_endpoint || null;
relayer.feeRecipientAddresses =
R.path(['static_order_fields', 'fee_recipient_addresses'], mainNetworkRelayerInfo) || [];
relayer.takerAddresses = R.path(['static_order_fields', 'taker_addresses'], mainNetworkRelayerInfo) || [];
} else {
relayer.feeRecipientAddresses = [];
relayer.takerAddresses = [];
}
return relayer;
}
function getMainNetwork(relayerResp: RelayerResponse): RelayerResponseNetwork | undefined {
return R.find(network => network.networkId === 1, relayerResp.networks);
}
|