45 lines
1.8 KiB
TypeScript
45 lines
1.8 KiB
TypeScript
import * as _ from 'lodash';
|
|
|
|
import { ArticlesBySection, WebsiteBackendGasInfo, WebsiteBackendPriceInfo, WebsiteBackendRelayerInfo } from 'ts/types';
|
|
import { fetchUtils } from 'ts/utils/fetch_utils';
|
|
import { utils } from 'ts/utils/utils';
|
|
|
|
const ETH_GAS_STATION_ENDPOINT = '/eth_gas_station';
|
|
const PRICES_ENDPOINT = '/prices';
|
|
const RELAYERS_ENDPOINT = '/relayers';
|
|
const WIKI_ENDPOINT = '/wiki';
|
|
const SUBSCRIBE_SUBSTACK_NEWSLETTER_ENDPOINT = '/newsletter_subscriber/substack';
|
|
|
|
export const backendClient = {
|
|
async getGasInfoAsync(): Promise<WebsiteBackendGasInfo> {
|
|
const result = await fetchUtils.requestAsync(utils.getBackendBaseUrl(), ETH_GAS_STATION_ENDPOINT);
|
|
return result;
|
|
},
|
|
async getPriceInfoAsync(tokenSymbols: string[]): Promise<WebsiteBackendPriceInfo> {
|
|
if (_.isEmpty(tokenSymbols)) {
|
|
return {};
|
|
}
|
|
const joinedTokenSymbols = tokenSymbols.join(',');
|
|
const queryParams = {
|
|
tokens: joinedTokenSymbols,
|
|
};
|
|
const result = await fetchUtils.requestAsync(utils.getBackendBaseUrl(), PRICES_ENDPOINT, queryParams);
|
|
return result;
|
|
},
|
|
async getRelayerInfosAsync(): Promise<WebsiteBackendRelayerInfo[]> {
|
|
const result = await fetchUtils.requestAsync(utils.getBackendBaseUrl(), RELAYERS_ENDPOINT);
|
|
return result;
|
|
},
|
|
async getWikiArticlesBySectionAsync(): Promise<ArticlesBySection> {
|
|
const result = await fetchUtils.requestAsync(utils.getBackendBaseUrl(), WIKI_ENDPOINT);
|
|
return result;
|
|
},
|
|
async subscribeToNewsletterAsync(email: string): Promise<Response> {
|
|
const result = await fetchUtils.postAsync(utils.getBackendBaseUrl(), SUBSCRIBE_SUBSTACK_NEWSLETTER_ENDPOINT, {
|
|
email,
|
|
referrer: window.location.href,
|
|
});
|
|
return result;
|
|
},
|
|
};
|