UNPKG

n8n-nodes-alive5weather

Version:
172 lines 6.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Alive5Weather = void 0; class Alive5Weather { constructor() { this.description = { displayName: 'Alive5Weather', name: 'alive5Weather', icon: 'icons/weather-sunny.svg', group: ['transform'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Get weather data from Open-Meteo API', defaults: { name: 'Alive5Weather', }, inputs: ['main'], outputs: ['main'], credentials: [], requestDefaults: { baseURL: 'https://api.open-meteo.com', headers: { Accept: 'application/json', }, }, properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Forecast', value: 'forecast', }, ], default: 'forecast', }, { displayName: 'Operation', name: 'operation', type: 'options', noDataExpression: true, displayOptions: { show: { resource: [ 'forecast', ], }, }, options: [ { name: 'Get', value: 'get', description: 'Get current weather data', action: 'Get current weather data', }, ], default: 'get', }, { displayName: 'Latitude', name: 'latitude', type: 'string', displayOptions: { show: { resource: [ 'forecast', ], operation: [ 'get', ], }, }, default: '52.52', required: true, description: 'Geographical coordinate for the location (latitude)', }, { displayName: 'Longitude', name: 'longitude', type: 'string', displayOptions: { show: { resource: [ 'forecast', ], operation: [ 'get', ], }, }, default: '13.41', required: true, description: 'Geographical coordinate for the location (longitude)', }, { displayName: 'Weather Parameters', name: 'currentParameters', type: 'multiOptions', displayOptions: { show: { resource: [ 'forecast', ], operation: [ 'get', ], }, }, options: [ { name: 'Temperature (2m)', value: 'temperature_2m', }, { name: 'Wind Speed (10m)', value: 'wind_speed_10m', }, { name: 'Relative Humidity (2m)', value: 'relative_humidity_2m', }, ], default: ['temperature_2m'], description: 'Current weather parameters to include', }, ], }; } async execute() { const items = this.getInputData(); const returnData = []; for (let i = 0; i < items.length; i++) { try { const resource = this.getNodeParameter('resource', i); const operation = this.getNodeParameter('operation', i); if (resource === 'forecast' && operation === 'get') { const latitude = this.getNodeParameter('latitude', i); const longitude = this.getNodeParameter('longitude', i); const currentParameters = this.getNodeParameter('currentParameters', i, ['temperature_2m']); const responseData = await this.helpers.httpRequest({ method: 'GET', url: 'https://api.open-meteo.com/v1/forecast', qs: { latitude, longitude, current: currentParameters.join(','), }, headers: { Accept: 'application/json', }, }); const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } }); returnData.push(...executionData); } } 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; } } return [returnData]; } } exports.Alive5Weather = Alive5Weather; //# sourceMappingURL=Alive5Weather.node.js.map