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;
 | |
|     },
 | |
| };
 |