UNPKG

n8n-nodes-base

Version:

Base nodes of n8n

141 lines 6.37 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Marketstack = void 0; const n8n_workflow_1 = require("n8n-workflow"); const descriptions_1 = require("./descriptions"); const GenericFunctions_1 = require("./GenericFunctions"); class Marketstack { description = { displayName: 'Marketstack', name: 'marketstack', subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', icon: { light: 'file:marketstack.svg', dark: 'file:marketstack.dark.svg' }, group: ['transform'], version: 1, description: 'Consume Marketstack API', defaults: { name: 'Marketstack', }, usableAsTool: true, inputs: [n8n_workflow_1.NodeConnectionTypes.Main], outputs: [n8n_workflow_1.NodeConnectionTypes.Main], credentials: [ { name: 'marketstackApi', required: true, }, ], properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'End-of-Day Data', value: 'endOfDayData', description: 'Stock market closing data', }, { name: 'Exchange', value: 'exchange', description: 'Stock market exchange', }, { name: 'Ticker', value: 'ticker', description: 'Stock market symbol', }, ], default: 'endOfDayData', required: true, }, ...descriptions_1.endOfDayDataOperations, ...descriptions_1.endOfDayDataFields, ...descriptions_1.exchangeOperations, ...descriptions_1.exchangeFields, ...descriptions_1.tickerOperations, ...descriptions_1.tickerFields, ], }; async execute() { const items = this.getInputData(); const resource = this.getNodeParameter('resource', 0); const operation = this.getNodeParameter('operation', 0); let responseData; const returnData = []; for (let i = 0; i < items.length; i++) { try { if (resource === 'endOfDayData') { if (operation === 'getAll') { // ---------------------------------- // endOfDayData: getAll // ---------------------------------- const qs = { symbols: this.getNodeParameter('symbols', i), }; const { latest, specificDate, dateFrom, dateTo, ...rest } = this.getNodeParameter('filters', i); GenericFunctions_1.validateTimeOptions.call(this, [ latest !== undefined && latest, specificDate !== undefined, dateFrom !== undefined && dateTo !== undefined, ]); if (Object.keys(rest).length) { Object.assign(qs, rest); } let endpoint; if (latest) { endpoint = '/eod/latest'; } else if (specificDate) { endpoint = `/eod/${(0, GenericFunctions_1.format)(specificDate)}`; } else { if (!dateFrom || !dateTo) { throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Please enter a start and end date to filter by timeframe.', { itemIndex: i }); } endpoint = '/eod'; qs.date_from = (0, GenericFunctions_1.format)(dateFrom); qs.date_to = (0, GenericFunctions_1.format)(dateTo); } responseData = await GenericFunctions_1.marketstackApiRequestAllItems.call(this, 'GET', endpoint, {}, qs); } } else if (resource === 'exchange') { if (operation === 'get') { // ---------------------------------- // exchange: get // ---------------------------------- const exchange = this.getNodeParameter('exchange', i); const endpoint = `/exchanges/${exchange}`; responseData = await GenericFunctions_1.marketstackApiRequest.call(this, 'GET', endpoint); } } else if (resource === 'ticker') { if (operation === 'get') { // ---------------------------------- // ticker: get // ---------------------------------- const symbol = this.getNodeParameter('symbol', i); const endpoint = `/tickers/${symbol}`; responseData = await GenericFunctions_1.marketstackApiRequest.call(this, 'GET', endpoint); } } } catch (error) { if (this.continueOnFail()) { const executionErrorData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }); returnData.push(...executionErrorData); continue; } throw error; } const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } }); returnData.push(...executionData); } return [returnData]; } } exports.Marketstack = Marketstack; //# sourceMappingURL=Marketstack.node.js.map