n8n/packages/nodes-base/nodes/SyncroMSP/v1/transport/index.ts
Anuj Kapoor 214dd5061e
Add Syncromsp node (#2477)
* Init Node

* Added get customer details api for syncomsp-node

* Fixed formatting bug 🐛

* Updated description for query params, and removed redundant condition in router

* Changed default value for page parameter

* 🚢 Added tickets API

* 🚢 Added contacts API

* 🚢 Added RMM Alerts API

* Add customer API

* Updates post code review

* Rename SyncroMspAPI.credentials.ts to SyncroMspApi.credentials.ts

* added create and delete method to customers module

* fix liniting issue

* Added Update method to customer module

* Code Review Changes

* 🚢 Added CRUD for contacts endpoint

* 🚢 Added CRUD for RMM Alert endpoint

* Added options for status field

* 🐛 fix linting issues

* Init Node

* Added get customer details api for syncomsp-node

* Fixed formatting bug 🐛

* Updated description for query params, and removed redundant condition in router

* Changed default value for page parameter

* 🚢 Added tickets API

* 🚢 Added contacts API

* 🚢 Added RMM Alerts API

* Updates post code review

* Add customer API

* added create and delete method to customers module

* fix liniting issue

* Added Update method to customer module

* Rename SyncroMspAPI.credentials.ts to SyncroMspApi.credentials.ts

* Code Review Changes

* 🚢 Added CRUD for contacts endpoint

* 🚢 Added CRUD for RMM Alert endpoint

* Added options for status field

* 🐛 fix linting issues

* 🚢 Added CRUD for ticket endpoint

* :tag: update get customer module

* :tag: update get customer module

* Minor bug fixes

* Changed response for ticket update

* 👕 Fix lint issue

* Alphabetically ordered all options

* 🐛 Fixed build issue

* 🐛 Fixed Server.ts build issue, rebased from master

*  Fix node issues

*  Fix more issues

*  Fixed all operations with the standard convention

* 👕 Fix lint

* Fix reviewed changes

* update border color

*  minor fixes

* minor fixes

* Added fallback when port in use

*  Minor Fixes

*  Hide addtional paramerts when return all is active

*  Fix issues with Tickets

*  Fix issues with Rmm

*  Fix issues with Customer

* 👕 Fix lint

*  Fix issues with Contact

* 👕 Fixed formatting issue

*  Return 404 in ID not found

* 👕 Fixed formatting issue

*  Improvements

*  Improvements

*  Improvements

*  Add credentials verification

*  Improvements

*  Improvements

*  Additional improvements

Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
Co-authored-by: ricardo <ricardoespinoza105@gmail.com>
2022-01-07 18:19:24 +01:00

94 lines
2.1 KiB
TypeScript

import {
IExecuteFunctions,
IHookFunctions,
ILoadOptionsFunctions,
} from 'n8n-core';
import {
GenericValue,
ICredentialDataDecryptedObject,
ICredentialTestFunctions,
IDataObject,
IHttpRequestOptions,
NodeApiError,
NodeOperationError,
} from 'n8n-workflow';
/**
* Make an API request to Mattermost
*/
export async function apiRequest(
this: IHookFunctions | IExecuteFunctions | ILoadOptionsFunctions,
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD',
endpoint: string,
body: IDataObject | GenericValue | GenericValue[] = {},
query: IDataObject = {},
) {
const credentials = await this.getCredentials('syncroMspApi');
if (!credentials) {
throw new NodeOperationError(this.getNode(), 'No credentials returned!');
}
query['api_key'] = credentials.apiKey;
const options: IHttpRequestOptions = {
method,
body,
qs: query,
url: `https://${credentials.subdomain}.syncromsp.com/api/v1/${endpoint}`,
headers: {},
};
try {
return await this.helpers.httpRequest(options);
} catch (error) {
throw new NodeApiError(this.getNode(), error);
}
}
export async function apiRequestAllItems(
this: IExecuteFunctions | ILoadOptionsFunctions,
method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'HEAD',
endpoint: string,
body: IDataObject = {},
query: IDataObject = {},
) {
let returnData: IDataObject[] = [];
let responseData;
query.page = 1;
do {
responseData = await apiRequest.call(this, method, endpoint, body, query);
query.page++;
returnData = returnData.concat(responseData[endpoint]);
} while (
responseData[endpoint].length !== 0
);
return returnData;
}
export async function validateCredentials(this: ICredentialTestFunctions, decryptedCredentials: ICredentialDataDecryptedObject): Promise<any> { // tslint:disable-line:no-any
const credentials = decryptedCredentials;
const {
subdomain,
apiKey,
} = credentials as {
subdomain: string,
apiKey: string,
};
const options: IHttpRequestOptions = {
method: 'GET',
qs: {
api_key: apiKey,
},
url: `https://${subdomain}.syncromsp.com/api/v1//me`,
};
return this.helpers.request(options);
}