mirror of
https://github.com/n8n-io/n8n.git
synced 2024-11-14 08:34:07 -08:00
🎉 F5 Node Initial Setup
This commit is contained in:
parent
3c843f5c74
commit
6fd4895d7a
446
packages/nodes-base/nodes/F5/F5.node.ts
Normal file
446
packages/nodes-base/nodes/F5/F5.node.ts
Normal file
|
@ -0,0 +1,446 @@
|
|||
import {
|
||||
IExecuteFunctions,
|
||||
} from 'n8n-core';
|
||||
|
||||
import {
|
||||
IDataObject,
|
||||
ILoadOptionsFunctions,
|
||||
INodeExecutionData,
|
||||
INodePropertyOptions,
|
||||
INodeType,
|
||||
INodeTypeDescription,
|
||||
} from 'n8n-workflow';
|
||||
|
||||
// import {
|
||||
// googleApiRequest,
|
||||
// googleApiRequestAllItems,
|
||||
// } from './GenericFunctions';
|
||||
|
||||
export class F5 implements INodeType {
|
||||
description: INodeTypeDescription = {
|
||||
displayName: 'F5',
|
||||
name: 'f5',
|
||||
icon: 'file:f5.svg',
|
||||
group: ['input'],
|
||||
version: 1,
|
||||
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
|
||||
description: 'Consume F5 API',
|
||||
defaults: {
|
||||
name: 'F5',
|
||||
color: '#e31735',
|
||||
},
|
||||
inputs: ['main'],
|
||||
outputs: ['main'],
|
||||
credentials: [
|
||||
{
|
||||
name: 'f5Api',
|
||||
required: true,
|
||||
},
|
||||
],
|
||||
properties: [
|
||||
{
|
||||
displayName: 'Resource',
|
||||
name: 'resource',
|
||||
type: 'options',
|
||||
options: [
|
||||
{
|
||||
name: 'Certificate',
|
||||
value: 'certificate',
|
||||
},
|
||||
],
|
||||
default: 'certificate',
|
||||
description: 'The resource to operate on.',
|
||||
},
|
||||
// ...groupOperations,
|
||||
// ...groupFields,
|
||||
// ...userOperations,
|
||||
// ...userFields,
|
||||
],
|
||||
};
|
||||
|
||||
// methods = {
|
||||
// loadOptions: {
|
||||
// // Get all the domains to display them to user so that he can
|
||||
// // select them easily
|
||||
// async getDomains(
|
||||
// this: ILoadOptionsFunctions,
|
||||
// ): Promise<INodePropertyOptions[]> {
|
||||
// const returnData: INodePropertyOptions[] = [];
|
||||
// const domains = await googleApiRequestAllItems.call(
|
||||
// this,
|
||||
// 'domains',
|
||||
// 'GET',
|
||||
// '/directory/v1/customer/my_customer/domains',
|
||||
// );
|
||||
// for (const domain of domains) {
|
||||
// const domainName = domain.domainName;
|
||||
// const domainId = domain.domainName;
|
||||
// returnData.push({
|
||||
// name: domainName,
|
||||
// value: domainId,
|
||||
// });
|
||||
// }
|
||||
// return returnData;
|
||||
// },
|
||||
// // Get all the schemas to display them to user so that he can
|
||||
// // select them easily
|
||||
// async getSchemas(
|
||||
// this: ILoadOptionsFunctions,
|
||||
// ): Promise<INodePropertyOptions[]> {
|
||||
// const returnData: INodePropertyOptions[] = [];
|
||||
// const schemas = await googleApiRequestAllItems.call(
|
||||
// this,
|
||||
// 'schemas',
|
||||
// 'GET',
|
||||
// '/directory/v1/customer/my_customer/schemas',
|
||||
// );
|
||||
// for (const schema of schemas) {
|
||||
// const schemaName = schema.displayName;
|
||||
// const schemaId = schema.schemaName;
|
||||
// returnData.push({
|
||||
// name: schemaName,
|
||||
// value: schemaId,
|
||||
// });
|
||||
// }
|
||||
// return returnData;
|
||||
// },
|
||||
// },
|
||||
// };
|
||||
|
||||
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
|
||||
const items = this.getInputData();
|
||||
const returnData: IDataObject[] = [];
|
||||
const length = (items.length as unknown) as number;
|
||||
const qs: IDataObject = {};
|
||||
let responseData;
|
||||
const resource = this.getNodeParameter('resource', 0) as string;
|
||||
const operation = this.getNodeParameter('operation', 0) as string;
|
||||
// for (let i = 0; i < length; i++) {
|
||||
// if (resource === 'group') {
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/groups/insert
|
||||
// if (operation === 'create') {
|
||||
// const email = this.getNodeParameter('email', i) as string;
|
||||
|
||||
// const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject;
|
||||
|
||||
// const body: IDataObject = {
|
||||
// email,
|
||||
// };
|
||||
|
||||
// Object.assign(body, additionalFields);
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'POST',
|
||||
// `/directory/v1/groups`,
|
||||
// body,
|
||||
// );
|
||||
// }
|
||||
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/groups/delete
|
||||
// if (operation === 'delete') {
|
||||
// const groupId = this.getNodeParameter('groupId', i) as string;
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'DELETE',
|
||||
// `/directory/v1/groups/${groupId}`,
|
||||
// {},
|
||||
// );
|
||||
|
||||
// responseData = { success: true };
|
||||
// }
|
||||
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/groups/get
|
||||
// if (operation === 'get') {
|
||||
// const groupId = this.getNodeParameter('groupId', i) as string;
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'GET',
|
||||
// `/directory/v1/groups/${groupId}`,
|
||||
// {},
|
||||
// );
|
||||
// }
|
||||
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/groups/list
|
||||
// if (operation === 'getAll') {
|
||||
// const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
|
||||
// const options = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
// Object.assign(qs, options);
|
||||
|
||||
// if (qs.customer === undefined) {
|
||||
// qs.customer = 'my_customer';
|
||||
// }
|
||||
|
||||
// if (returnAll) {
|
||||
// responseData = await googleApiRequestAllItems.call(
|
||||
// this,
|
||||
// 'groups',
|
||||
// 'GET',
|
||||
// `/directory/v1/groups`,
|
||||
// {},
|
||||
// qs,
|
||||
// );
|
||||
|
||||
// } else {
|
||||
// qs.maxResults = this.getNodeParameter('limit', i) as number;
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'GET',
|
||||
// `/directory/v1/groups`,
|
||||
// {},
|
||||
// qs,
|
||||
// );
|
||||
|
||||
// responseData = responseData.groups;
|
||||
// }
|
||||
// }
|
||||
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/groups/update
|
||||
// if (operation === 'update') {
|
||||
// const groupId = this.getNodeParameter('groupId', i) as string;
|
||||
|
||||
// const updateFields = this.getNodeParameter('updateFields', i) as IDataObject;
|
||||
|
||||
// const body: IDataObject = {};
|
||||
|
||||
// Object.assign(body, updateFields);
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'PUT',
|
||||
// `/directory/v1/groups/${groupId}`,
|
||||
// body,
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (resource === 'user') {
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/users/insert
|
||||
// if (operation === 'create') {
|
||||
// const domain = this.getNodeParameter('domain', i) as string;
|
||||
|
||||
// const firstName = this.getNodeParameter('firstName', i) as string;
|
||||
|
||||
// const lastName = this.getNodeParameter('lastName', i) as string;
|
||||
|
||||
// const password = this.getNodeParameter('password', i) as string;
|
||||
|
||||
// const username = this.getNodeParameter('username', i) as string;
|
||||
|
||||
// const makeAdmin = this.getNodeParameter('makeAdmin', i) as boolean;
|
||||
|
||||
// const additionalFields = this.getNodeParameter('additionalFields', i) as IDataObject;
|
||||
|
||||
// const body: IDataObject = {
|
||||
// name: {
|
||||
// familyName: lastName,
|
||||
// givenName: firstName,
|
||||
// },
|
||||
// password,
|
||||
// primaryEmail: `${username}@${domain}`,
|
||||
// };
|
||||
|
||||
// Object.assign(body, additionalFields);
|
||||
|
||||
// if (additionalFields.phoneUi) {
|
||||
// const phones = (additionalFields.phoneUi as IDataObject).phoneValues as IDataObject[];
|
||||
|
||||
// body.phones = phones;
|
||||
|
||||
// delete body.phoneUi;
|
||||
// }
|
||||
|
||||
// if (additionalFields.emailUi) {
|
||||
// const emails = (additionalFields.emailUi as IDataObject).emailValues as IDataObject[];
|
||||
|
||||
// body.emails = emails;
|
||||
|
||||
// delete body.emailUi;
|
||||
// }
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'POST',
|
||||
// `/directory/v1/users`,
|
||||
// body,
|
||||
// qs,
|
||||
// );
|
||||
|
||||
// if (makeAdmin) {
|
||||
// await googleApiRequest.call(
|
||||
// this,
|
||||
// 'POST',
|
||||
// `/directory/v1/users/${responseData.id}/makeAdmin`,
|
||||
// { status: true },
|
||||
// );
|
||||
|
||||
// responseData.isAdmin = true;
|
||||
// }
|
||||
// }
|
||||
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/users/delete
|
||||
// if (operation === 'delete') {
|
||||
// const userId = this.getNodeParameter('userId', i) as string;
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'DELETE',
|
||||
// `/directory/v1/users/${userId}`,
|
||||
// {},
|
||||
// );
|
||||
|
||||
// responseData = { success: true };
|
||||
// }
|
||||
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/users/get
|
||||
// if (operation === 'get') {
|
||||
// const userId = this.getNodeParameter('userId', i) as string;
|
||||
|
||||
// const projection = this.getNodeParameter('projection', i) as string;
|
||||
|
||||
// const options = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
// qs.projection = projection;
|
||||
|
||||
// Object.assign(qs, options);
|
||||
|
||||
// if (qs.customFieldMask) {
|
||||
// qs.customFieldMask = (qs.customFieldMask as string[]).join(' ');
|
||||
// }
|
||||
|
||||
// if (qs.projection === 'custom' && qs.customFieldMask === undefined) {
|
||||
// throw new Error('When projection is set to custom, the custom schemas field must be defined');
|
||||
// }
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'GET',
|
||||
// `/directory/v1/users/${userId}`,
|
||||
// {},
|
||||
// qs,
|
||||
// );
|
||||
// }
|
||||
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/users/list
|
||||
// if (operation === 'getAll') {
|
||||
// const returnAll = this.getNodeParameter('returnAll', i) as boolean;
|
||||
|
||||
// const projection = this.getNodeParameter('projection', i) as string;
|
||||
|
||||
// const options = this.getNodeParameter('options', i) as IDataObject;
|
||||
|
||||
// qs.projection = projection;
|
||||
|
||||
// Object.assign(qs, options);
|
||||
|
||||
// if (qs.customer === undefined) {
|
||||
// qs.customer = 'my_customer';
|
||||
// }
|
||||
|
||||
// if (qs.customFieldMask) {
|
||||
// qs.customFieldMask = (qs.customFieldMask as string[]).join(' ');
|
||||
// }
|
||||
|
||||
// if (qs.projection === 'custom' && qs.customFieldMask === undefined) {
|
||||
// throw new Error('When projection is set to custom, the custom schemas field must be defined');
|
||||
// }
|
||||
|
||||
// if (returnAll) {
|
||||
// responseData = await googleApiRequestAllItems.call(
|
||||
// this,
|
||||
// 'users',
|
||||
// 'GET',
|
||||
// `/directory/v1/users`,
|
||||
// {},
|
||||
// qs,
|
||||
// );
|
||||
|
||||
// } else {
|
||||
// qs.maxResults = this.getNodeParameter('limit', i) as number;
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'GET',
|
||||
// `/directory/v1/users`,
|
||||
// {},
|
||||
// qs,
|
||||
// );
|
||||
|
||||
// responseData = responseData.users;
|
||||
// }
|
||||
// }
|
||||
|
||||
// //https://developers.google.com/admin-sdk/directory/v1/reference/users/update
|
||||
// if (operation === 'update') {
|
||||
// const userId = this.getNodeParameter('userId', i) as string;
|
||||
|
||||
// const updateFields = this.getNodeParameter('updateFields', i) as IDataObject;
|
||||
|
||||
// const body: { name: { givenName?: string, familyName?: string }, emails?: IDataObject[], phones?: IDataObject[] } = { name: {} };
|
||||
|
||||
// Object.assign(body, updateFields);
|
||||
|
||||
// if (updateFields.firstName) {
|
||||
// body.name.givenName = updateFields.firstName as string;
|
||||
// //@ts-ignore
|
||||
// delete body.firstName;
|
||||
// }
|
||||
|
||||
// if (updateFields.lastName) {
|
||||
// body.name.familyName = updateFields.lastName as string;
|
||||
// //@ts-ignore
|
||||
// delete body.lastName;
|
||||
// }
|
||||
|
||||
// if (Object.keys(body.name).length === 0) {
|
||||
// //@ts-ignore
|
||||
// delete body.name;
|
||||
// }
|
||||
|
||||
// if (updateFields.phoneUi) {
|
||||
// const phones = (updateFields.phoneUi as IDataObject).phoneValues as IDataObject[];
|
||||
|
||||
// body.phones = phones;
|
||||
|
||||
// //@ts-ignore
|
||||
// delete body.phoneUi;
|
||||
// }
|
||||
|
||||
// if (updateFields.emailUi) {
|
||||
// const emails = (updateFields.emailUi as IDataObject).emailValues as IDataObject[];
|
||||
|
||||
// body.emails = emails;
|
||||
|
||||
// //@ts-ignore
|
||||
// delete body.emailUi;
|
||||
// }
|
||||
|
||||
// //@ts-ignore
|
||||
// body['customSchemas'] = { testing: { hasdog: true } };
|
||||
|
||||
// responseData = await googleApiRequest.call(
|
||||
// this,
|
||||
// 'PUT',
|
||||
// `/directory/v1/users/${userId}`,
|
||||
// body,
|
||||
// qs,
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
// if (Array.isArray(responseData)) {
|
||||
// returnData.push.apply(returnData, responseData as IDataObject[]);
|
||||
|
||||
// } else if (responseData !== undefined) {
|
||||
// returnData.push(responseData as IDataObject);
|
||||
// }
|
||||
|
||||
return [this.helpers.returnJsonArray(returnData)];
|
||||
}
|
||||
}
|
19
packages/nodes-base/nodes/F5/f5.svg
Normal file
19
packages/nodes-base/nodes/F5/f5.svg
Normal file
|
@ -0,0 +1,19 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg version="1.1" id="f5logo" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="48.5px" height="44.5px" viewBox="0 0 48.5 44.5" enable-background="new 0 0 48.5 44.5" xml:space="preserve">
|
||||
<circle id="bg" fill="#E21D38" cx="22.5" cy="22.3" r="22.2"/>
|
||||
<path fill="#FFFFFF" d="M21.99,24.49c10.9,0.9,15.1,3.9,14.9,8c-0.2,2.2-2.3,4.3-5,4.5c-3.2,0.2-4.7-1.1-5.6-2.5
|
||||
c-0.8-1.3-1.7-2.6-2.6-4c-0.2-0.4-0.6-0.1-0.9,0.1c-0.7,0.6-1.3,1.3-1.9,1.9c-0.4,0.4-0.3,0.7-0.2,1c0.6,1.4,1.2,2.8,1.8,4.1
|
||||
c1,0.6,5.5,1.4,8.8,1.1c2.3-0.2,5.1-1.1,7.5-2.8c2.3-1.8,4-4.2,4.3-8.1c0.1-2.4-0.3-4.9-2.4-7.2c-2.1-2.3-5.7-4.2-13-4.7
|
||||
c0.4-1.2,0.7-2.3,1.1-3.4c4.4,0.2,8.3,0.5,11.6,0.9c0.3-1.3,0.4-2.5,0.7-3.7l-0.9-1.1c-1.7-0.2-3.3-0.6-5.1-0.8
|
||||
c-2.3-0.3-4.7-0.5-7.3-0.6C26.09,11.99,24.09,18.09,21.99,24.49 M19.09,5.79c-0.8,0-1.9,0.2-3.7,0.6c-3.9,1.1-8.7,3.8-9.2,8.3
|
||||
c-0.1,0.7-0.1,1.5-0.2,2.2c-1.1,0.1-2.1,0.2-3.1,0.3c-0.1,0.9-0.1,1.7-0.2,2.6c1-0.1,2-0.1,3.1-0.2c-0.2,4.7,0,9.4,0.4,13.8
|
||||
c0.1,0.7,0.1,1.3,0.1,1.7c-0.1,0.4-0.8,0.6-1.8,0.6l1.3,1.6c3.8,0.7,8.6,1.2,13.7,1.3c0-0.5,0-1,0-1.5c-3-0.2-4.4-0.6-4.6-1.2
|
||||
c-0.2-0.5-0.2-1.2-0.3-1.9c-0.2-4.6-0.3-9.6-0.2-14.7c1.7,0,3.4,0,5.1-0.1c0.9-0.4,1.7-0.8,2.5-1.2c0-0.6,0-1.2,0-1.7
|
||||
c-2.6,0-5.1,0.1-7.6,0.1c0.1-2.1,0.2-4.1,0.3-6c0.1-1.3,1-2.2,1.8-2.2c1.4-0.1,2.7,0.5,4,1.1c0.7,0.3,1.4,0.7,2.1,1
|
||||
c0.3,0.1,0.7,0.2,1-0.1c0.4-0.5,0.8-1,1.2-1.4c0.2-0.3,0.1-0.5,0-0.6c-0.9-0.7-1.7-1.3-2.6-2c-0.5-0.4-1.4-0.4-2.2-0.4
|
||||
C19.69,5.69,19.39,5.79,19.09,5.79"/>
|
||||
<text transform="matrix(1 0 0 1 45.4951 36.8469)" fill="#E21D38" font-family="'Arial'" font-size="2.2">R</text>
|
||||
<circle fill="none" stroke="#E21D38" stroke-width="0.2742" stroke-miterlimit="10" cx="46.23" cy="36.07" r="1.53"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.8 KiB |
|
@ -285,6 +285,7 @@
|
|||
"dist/nodes/Flow/FlowTrigger.node.js",
|
||||
"dist/nodes/Function.node.js",
|
||||
"dist/nodes/FunctionItem.node.js",
|
||||
"dist/nodes/F5/F5.node.js",
|
||||
"dist/nodes/GetResponse/GetResponse.node.js",
|
||||
"dist/nodes/Github/Github.node.js",
|
||||
"dist/nodes/Github/GithubTrigger.node.js",
|
||||
|
|
Loading…
Reference in a new issue