mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 10:02:05 +00:00
stream interface, data handling logic
This commit is contained in:
@@ -23,6 +23,8 @@ import {
|
||||
import { snakeCase } from 'change-case';
|
||||
import { streamFields, streamOperations } from './StreamDescription';
|
||||
import { userOperations, userFields } from './UserDescription';
|
||||
import { IStream } from './StreamInterface';
|
||||
import { validateJSON } from './GenericFunctions';
|
||||
|
||||
export class Zulip implements INodeType {
|
||||
description: INodeTypeDescription = {
|
||||
@@ -220,6 +222,145 @@ export class Zulip implements INodeType {
|
||||
responseData.uri = `${credentials!.url}${responseData.uri}`;
|
||||
}
|
||||
}
|
||||
|
||||
if (resource === 'stream') {
|
||||
const body: IStream = {};
|
||||
|
||||
if (operation === 'getAll') {
|
||||
const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject;
|
||||
|
||||
if (additionalFields.includePublic) {
|
||||
body.include_public = additionalFields.includePublic as boolean;
|
||||
}
|
||||
if (additionalFields.includeSubscribed) {
|
||||
body.include_subscribed = additionalFields.includeSubscribed as boolean;
|
||||
}
|
||||
if (additionalFields.includeAllActive) {
|
||||
body.include_all_active = additionalFields.includeAllActive as boolean;
|
||||
}
|
||||
if (additionalFields.includeDefault) {
|
||||
body.include_default = additionalFields.includeDefault as boolean;
|
||||
}
|
||||
if (additionalFields.includeOwnersubscribed) {
|
||||
body.include_owner_subscribed = additionalFields.includeOwnersubscribed as boolean;
|
||||
}
|
||||
|
||||
responseData = await zulipApiRequest.call(this, 'GET', `/streams`, body);
|
||||
}
|
||||
|
||||
if (operation === 'getSubscribed') {
|
||||
const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject;
|
||||
|
||||
if (additionalFields.includeSubscribers) {
|
||||
body.include_subscribers = additionalFields.includeSubscribers as boolean;
|
||||
}
|
||||
|
||||
responseData = await zulipApiRequest.call(this, 'GET', `/users/me/subscriptions`, body);
|
||||
}
|
||||
|
||||
if (operation === 'create') {
|
||||
|
||||
const jsonParameters = this.getNodeParameter('jsonParameters', i) as boolean;
|
||||
|
||||
if (jsonParameters) {
|
||||
const additionalFieldsJson = this.getNodeParameter('additionalFieldsJson', i) as string;
|
||||
|
||||
if (additionalFieldsJson !== '') {
|
||||
|
||||
if (validateJSON(additionalFieldsJson) !== undefined) {
|
||||
|
||||
Object.assign(body, JSON.parse(additionalFieldsJson));
|
||||
|
||||
} else {
|
||||
throw new Error('Additional fields must be a valid JSON');
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject;
|
||||
|
||||
if (additionalFields.subscriptions) {
|
||||
//@ts-ignore
|
||||
body.subscriptions = additionalFields.subscriptions.properties as [{}];
|
||||
}
|
||||
if (additionalFields.inviteOnly) {
|
||||
body.invite_only = additionalFields.inviteOnly as boolean;
|
||||
}
|
||||
if (additionalFields.principals) {
|
||||
//@ts-ignore
|
||||
body.principals = additionalFields.principals.properties as string[];
|
||||
}
|
||||
if (additionalFields.authorizationErrorsFatal) {
|
||||
body.authorization_errors_fatal = additionalFields.authorizationErrorsFatal as boolean;
|
||||
}
|
||||
if (additionalFields.historyPublicToSubscribers) {
|
||||
body.history_public_to_subscribers = additionalFields.historyPublicToSubscribers as boolean;
|
||||
}
|
||||
if (additionalFields.streamPostPolicy) {
|
||||
body.stream_post_policy = additionalFields.streamPostPolicy as number;
|
||||
}
|
||||
if (additionalFields.announce) {
|
||||
body.announce = additionalFields.announce as boolean;
|
||||
}
|
||||
}
|
||||
|
||||
responseData = await zulipApiRequest.call(this, 'POST', `/users/me/subscriptions`, body);
|
||||
}
|
||||
|
||||
if (operation === 'delete') {
|
||||
const streamId = this.getNodeParameter('streamId', i) as string;
|
||||
|
||||
responseData = await zulipApiRequest.call(this, 'POST', `streams/${streamId}`, {});
|
||||
}
|
||||
|
||||
if (operation === 'update') {
|
||||
const streamId = this.getNodeParameter('streamId', i) as string;
|
||||
|
||||
const jsonParameters = this.getNodeParameter('jsonParameters', i) as boolean;
|
||||
|
||||
if (jsonParameters) {
|
||||
const additionalFieldsJson = this.getNodeParameter('additionalFieldsJson', i) as string;
|
||||
|
||||
if (additionalFieldsJson !== '') {
|
||||
|
||||
if (validateJSON(additionalFieldsJson) !== undefined) {
|
||||
|
||||
Object.assign(body, JSON.parse(additionalFieldsJson));
|
||||
|
||||
} else {
|
||||
throw new Error('Additional fields must be a valid JSON');
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject;
|
||||
|
||||
if (additionalFields.description) {
|
||||
body.description = additionalFields.description as string;
|
||||
}
|
||||
if (additionalFields.newName) {
|
||||
body.new_name = additionalFields.newName as string;
|
||||
}
|
||||
if (additionalFields.isPrivate) {
|
||||
body.is_private = additionalFields.isPrivate as boolean;
|
||||
}
|
||||
if (additionalFields.isAnnouncementOnly) {
|
||||
body.is_announcement_only = additionalFields.isAnnouncementOnly as boolean;
|
||||
}
|
||||
if (additionalFields.streamPostPolicy) {
|
||||
body.stream_post_policy = additionalFields.streamPostPolicy as number;
|
||||
}
|
||||
if (additionalFields.historyPublicToSubscribers) {
|
||||
body.history_public_to_subscribers = additionalFields.historyPublicToSubscribers as boolean;
|
||||
}
|
||||
|
||||
responseData = await zulipApiRequest.call(this, 'PATCH', `/streams/${streamId}`, body);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
if (Array.isArray(responseData)) {
|
||||
returnData.push.apply(returnData, responseData as IDataObject[]);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user