UNPKG

n8n-nodes-base

Version:

Base nodes of n8n

139 lines 5.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Matrix = void 0; const n8n_workflow_1 = require("n8n-workflow"); const AccountDescription_1 = require("./AccountDescription"); const EventDescription_1 = require("./EventDescription"); const GenericFunctions_1 = require("./GenericFunctions"); const MediaDescription_1 = require("./MediaDescription"); const MessageDescription_1 = require("./MessageDescription"); const RoomDescription_1 = require("./RoomDescription"); const RoomMemberDescription_1 = require("./RoomMemberDescription"); class Matrix { description = { displayName: 'Matrix', name: 'matrix', // eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg icon: 'file:matrix.png', group: ['output'], version: 1, description: 'Consume Matrix API', subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', defaults: { name: 'Matrix', }, usableAsTool: true, inputs: [n8n_workflow_1.NodeConnectionTypes.Main], outputs: [n8n_workflow_1.NodeConnectionTypes.Main], credentials: [ { name: 'matrixApi', required: true, }, ], properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Account', value: 'account', }, { name: 'Event', value: 'event', }, { name: 'Media', value: 'media', }, { name: 'Message', value: 'message', }, { name: 'Room', value: 'room', }, { name: 'Room Member', value: 'roomMember', }, ], default: 'message', }, ...AccountDescription_1.accountOperations, ...EventDescription_1.eventOperations, ...EventDescription_1.eventFields, ...MediaDescription_1.mediaOperations, ...MediaDescription_1.mediaFields, ...MessageDescription_1.messageOperations, ...MessageDescription_1.messageFields, ...RoomDescription_1.roomOperations, ...RoomDescription_1.roomFields, ...RoomMemberDescription_1.roomMemberOperations, ...RoomMemberDescription_1.roomMemberFields, ], }; methods = { loadOptions: { async getChannels() { const returnData = []; const joinedRoomsResponse = await GenericFunctions_1.matrixApiRequest.call(this, 'GET', '/joined_rooms'); await Promise.all(joinedRoomsResponse.joined_rooms.map(async (roomId) => { try { const roomNameResponse = await GenericFunctions_1.matrixApiRequest.call(this, 'GET', `/rooms/${roomId}/state/m.room.name`); returnData.push({ name: roomNameResponse.name, value: roomId, }); } catch (error) { // TODO: Check, there is probably another way to get the name of this private-chats returnData.push({ name: `Unknown: ${roomId}`, value: roomId, }); } })); returnData.sort((a, b) => { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; }); return returnData; }, }, }; async execute() { const items = this.getInputData(); const returnData = []; const resource = this.getNodeParameter('resource', 0); const operation = this.getNodeParameter('operation', 0); for (let i = 0; i < items.length; i++) { try { const responseData = await GenericFunctions_1.handleMatrixCall.call(this, i, resource, operation); const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } }); returnData.push(...executionData); } catch (error) { if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray({ error: error.message }), { itemData: { item: i } }); returnData.push(...executionData); continue; } throw error; } } return [returnData]; } } exports.Matrix = Matrix; //# sourceMappingURL=Matrix.node.js.map