mirror of
https://github.com/exchanges-lab/view.git
synced 2026-08-07 06:14:42 +08:00
38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { UdfQuotesResponse, IQuotesProvider } from './iquotes-provider';
|
|
import { QuoteData } from '../../../charting_library/datafeed-api';
|
|
|
|
import {
|
|
getErrorMessage,
|
|
logMessage,
|
|
UdfErrorResponse,
|
|
} from './helpers';
|
|
import { IRequester } from './irequester';
|
|
|
|
export class QuotesProvider implements IQuotesProvider {
|
|
private readonly _datafeedUrl: string;
|
|
private readonly _requester: IRequester;
|
|
|
|
public constructor(datafeedUrl: string, requester: IRequester) {
|
|
this._datafeedUrl = datafeedUrl;
|
|
this._requester = requester;
|
|
}
|
|
|
|
public getQuotes(symbols: string[]): Promise<QuoteData[]> {
|
|
return new Promise((resolve: (data: QuoteData[]) => void, reject: (reason: string) => void) => {
|
|
this._requester.sendRequest<UdfQuotesResponse>(this._datafeedUrl, 'quotes', { symbols: symbols })
|
|
.then((response: UdfQuotesResponse | UdfErrorResponse) => {
|
|
if (response.s === 'ok') {
|
|
resolve(response.d);
|
|
} else {
|
|
reject(response.errmsg);
|
|
}
|
|
})
|
|
.catch((error?: string | Error) => {
|
|
const errorMessage = getErrorMessage(error);
|
|
logMessage(`QuotesProvider: getQuotes failed, error=${errorMessage}`);
|
|
reject(`network error: ${errorMessage}`);
|
|
});
|
|
});
|
|
}
|
|
}
|