n8n-nodes-base
Version:
Base nodes of n8n
139 lines • 5.44 kB
JavaScript
;
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