Fixes tradingview/charting_library#60 Fixes tradingview/charting_library#65 Fixes tradingview/charting_library#70 Fixes tradingview/charting_library#71 Fixes tradingview/charting_library#75 Fixes tradingview/charting_library#76 Fixes tradingview/charting_library#78 Fixes tradingview/charting_library#79 Fixes tradingview/charting_library#81 Fixes tradingview/charting_library#82 Fixes tradingview/charting_library#84 Fixes tradingview/charting_library#86 Fixes tradingview/charting_library#89 Fixes tradingview/charting_library#90 Fixes tradingview/charting_library#91 Fixes tradingview/charting_library#92 Fixes tradingview/charting_library#94 Fixes tradingview/charting_library#99 Fixes tradingview/charting_library#100 Fixes tradingview/charting_library#101 Fixes tradingview/charting_library#102 Fixes tradingview/charting_library#103 Fixes tradingview/charting_library#1995 Fixes tradingview/charting_library#5726 Fixes tradingview/charting_library#6025 Fixes tradingview/charting_library#6406 Fixes tradingview/charting_library#6636 Fixes tradingview/charting_library#6767 Fixes tradingview/charting_library#6775 Fixes tradingview/charting_library#6783 Fixes tradingview/charting_library#6864 Fixes tradingview/charting_library#6926 Fixes tradingview/charting_library#7060 Fixes tradingview/charting_library#7169 Fixes tradingview/charting_library#7307
41 lines
1.3 KiB
TypeScript
41 lines
1.3 KiB
TypeScript
import { RequestParams, UdfResponse, UdfErrorResponse, logMessage } from './helpers';
|
|
|
|
export class Requester {
|
|
private _headers: HeadersInit | undefined;
|
|
|
|
public constructor(headers?: HeadersInit) {
|
|
if (headers) {
|
|
this._headers = headers;
|
|
}
|
|
}
|
|
|
|
public sendRequest<T extends UdfResponse>(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise<T | UdfErrorResponse>;
|
|
public sendRequest<T>(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise<T>;
|
|
public sendRequest<T>(datafeedUrl: string, urlPath: string, params?: RequestParams): Promise<T> {
|
|
if (params !== undefined) {
|
|
const paramKeys = Object.keys(params);
|
|
if (paramKeys.length !== 0) {
|
|
urlPath += '?';
|
|
}
|
|
|
|
urlPath += paramKeys.map((key: string) => {
|
|
return `${encodeURIComponent(key)}=${encodeURIComponent(params[key].toString())}`;
|
|
}).join('&');
|
|
}
|
|
|
|
logMessage('New request: ' + urlPath);
|
|
|
|
// Send user cookies if the URL is on the same origin as the calling script.
|
|
const options: RequestInit = { credentials: 'same-origin' };
|
|
|
|
if (this._headers !== undefined) {
|
|
options.headers = this._headers;
|
|
}
|
|
|
|
// eslint-disable-next-line no-restricted-globals
|
|
return fetch(`${datafeedUrl}/${urlPath}`, options)
|
|
.then((response: Response) => response.text())
|
|
.then((responseTest: string) => JSON.parse(responseTest));
|
|
}
|
|
}
|