UNPKG

earningscall

Version:

The EarningsCall JavaScript library provides convenient access to the EarningsCall API. It includes a pre-defined set of classes for API resources that initialize themselves dynamically from API responses.

157 lines 11.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setApiKey = setApiKey; exports.getApiKey = getApiKey; exports.apiKeyParam = apiKeyParam; exports.isDemoAccount = isDemoAccount; exports.handleErrorStatusCodes = handleErrorStatusCodes; exports.doGet = doGet; exports.getEvents = getEvents; exports.getTranscript = getTranscript; exports.getSymbolsV2 = getSymbolsV2; exports.getSp500CompaniesTxtFile = getSp500CompaniesTxtFile; exports.downloadAudioFile = downloadAudioFile; const fs_1 = __importDefault(require("fs")); const version_1 = require("./version"); const errors_1 = require("./errors"); const os_1 = __importDefault(require("os")); const DOMAIN = 'earningscall.biz'; const API_BASE = `https://v2.api.${DOMAIN}`; let _apiKey; function setApiKey(apiKey) { _apiKey = apiKey; } function getApiKey() { if (_apiKey !== undefined) { return _apiKey; } return (process.env.ECALL_API_KEY || process.env.EARNINGSCALL_API_KEY || 'demo'); } function apiKeyParam() { return { apikey: getApiKey() }; } function isDemoAccount() { return getApiKey() === 'demo'; } function getUserAgent() { const osType = os_1.default.type(); const osRelease = os_1.default.release(); const platform = os_1.default.platform(); const arch = os_1.default.arch(); const nodeVersion = process.version; const earningsCallVersion = version_1.LIB_VERSION; return `EarningsCallJavaScript/${earningsCallVersion} (${platform} ${osType}/${osRelease}; ${arch}) Node.js/${nodeVersion.slice(1)}`; } function getHeaders() { return { 'User-Agent': getUserAgent(), 'X-EarningsCall-Version': version_1.LIB_VERSION, }; } function handleErrorStatusCodes(response) { if (response.status === 401) { throw new errors_1.UnauthorizedError(response); } if (response.status === 404) { throw new errors_1.NotFoundError(response); } if (response.status === 403) { throw new errors_1.InsufficientApiAccessError('Insufficient API access rights', response); } if (response.status === 429) { throw new errors_1.TooManyRequestsError(response); } if (response.status === 400) { throw new errors_1.BadRequestError(response); } if (response.status === 500) { throw new errors_1.InternalServerError(response); } if (response.status !== 200) { throw new errors_1.UnexpectedError(`HTTP error status: ${response.status}`, response); } } async function doGet(path, params) { const finalParams = { ...apiKeyParam(), ...params, }; const url = new URL(`${API_BASE}/${path}`); Object.entries(finalParams).forEach(([key, value]) => { url.searchParams.set(key, value); }); const response = await fetch(url, { method: 'GET', headers: getHeaders(), }); handleErrorStatusCodes(response); return response; } async function getEvents(exchange, symbol) { const params = { exchange, symbol, }; const response = await doGet('events', params); return response.json(); } async function getTranscript(exchange, symbol, year, quarter, level) { const params = { ...apiKeyParam(), exchange, symbol, year: year.toString(), quarter: quarter.toString(), level: (level || 1).toString(), }; const response = await doGet('transcript', params); return response.json(); } async function getSymbolsV2() { const response = await doGet('symbols-v2.txt', {}); return response; } async function getSp500CompaniesTxtFile() { const response = await doGet('symbols/sp500.txt', {}); return response.text(); } async function downloadAudioFile(exchange, symbol, year, quarter, outputFilePath) { const params = { ...apiKeyParam(), exchange, symbol, year: year.toString(), quarter: quarter.toString(), }; const localFilename = outputFilePath || `${exchange}_${symbol}_${year}_${quarter}.mp3`; const url = new URL(`${API_BASE}/audio`); Object.entries(params).forEach(([key, value]) => { url.searchParams.set(key, value); }); const response = await fetch(url, { headers: getHeaders(), }); handleErrorStatusCodes(response); const responseHeaders = response.headers; const contentLength = Number(responseHeaders.get('Content-Length')); const contentType = responseHeaders.get('Content-Type'); const lastModified = new Date(responseHeaders.get('Last-Modified') || ''); const writer = fs_1.default.createWriteStream(localFilename); const buffer = await response.arrayBuffer(); const uint8Array = new Uint8Array(buffer); writer.write(uint8Array); const result = { outputFilePath: localFilename, contentLength, contentType: contentType || undefined, lastModified, }; return new Promise((resolve, reject) => { writer.end(() => resolve(result)); writer.on('error', reject); }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFtQkEsOEJBRUM7QUFFRCw4QkFPQztBQUVELGtDQUVDO0FBRUQsc0NBRUM7QUFtQkQsd0RBNEJDO0FBRUQsc0JBa0JDO0FBRUQsOEJBVUM7QUFFRCxzQ0FpQkM7QUFFRCxvQ0FHQztBQUVELDREQUdDO0FBRUQsOENBNkNDO0FBak1ELDRDQUFvQjtBQUNwQix1Q0FBd0M7QUFDeEMscUNBUWtCO0FBRWxCLDRDQUFvQjtBQUVwQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQztBQUNsQyxNQUFNLFFBQVEsR0FBRyxrQkFBa0IsTUFBTSxFQUFFLENBQUM7QUFFNUMsSUFBSSxPQUEyQixDQUFDO0FBRWhDLFNBQWdCLFNBQVMsQ0FBQyxNQUEwQjtJQUNsRCxPQUFPLEdBQUcsTUFBTSxDQUFDO0FBQ25CLENBQUM7QUFFRCxTQUFnQixTQUFTO0lBQ3ZCLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQzFCLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxPQUFPLENBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsSUFBSSxNQUFNLENBQ3hFLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsV0FBVztJQUN6QixPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxTQUFTLEVBQUUsS0FBSyxNQUFNLENBQUM7QUFDaEMsQ0FBQztBQUVELFNBQVMsWUFBWTtJQUNuQixNQUFNLE1BQU0sR0FBRyxZQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsTUFBTSxTQUFTLEdBQUcsWUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQy9CLE1BQU0sUUFBUSxH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