You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

37 lines
1.2 KiB

import { UdfQuotesResponse, IQuotesProvider } from './iquotes-provider';
import { QuoteData } from '../../../charting_library/datafeed-api';
import {
getErrorMessage,
logMessage,
UdfErrorResponse,
} from './helpers';
import { Requester } from './requester';
export class QuotesProvider implements IQuotesProvider {
private readonly _datafeedUrl: string;
private readonly _requester: Requester;
public constructor(datafeedUrl: string, requester: Requester) {
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}`);
});
});
}
}