2023-03-14 10:47:37 -07:00
|
|
|
import type { IDataObject, INodeProperties } from 'n8n-workflow';
|
2023-01-27 03:22:44 -08:00
|
|
|
import { jsonParse } from 'n8n-workflow';
|
2022-07-26 05:43:36 -07:00
|
|
|
|
|
|
|
export const questionsOperations: INodeProperties[] = [
|
|
|
|
{
|
|
|
|
displayName: 'Operation',
|
|
|
|
name: 'operation',
|
|
|
|
type: 'options',
|
|
|
|
noDataExpression: true,
|
|
|
|
displayOptions: {
|
|
|
|
show: {
|
|
|
|
resource: ['questions'],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
options: [
|
|
|
|
{
|
|
|
|
name: 'Get',
|
|
|
|
value: 'get',
|
|
|
|
description: 'Get a specific question',
|
|
|
|
routing: {
|
|
|
|
request: {
|
|
|
|
method: 'GET',
|
|
|
|
url: '={{"/api/card/" + $parameter.questionId}}',
|
|
|
|
},
|
|
|
|
},
|
|
|
|
action: 'Get a questions',
|
|
|
|
},
|
|
|
|
{
|
2022-09-07 07:51:14 -07:00
|
|
|
name: 'Get Many',
|
2022-07-26 05:43:36 -07:00
|
|
|
value: 'getAll',
|
2022-09-13 03:36:36 -07:00
|
|
|
description: 'Get many questions',
|
2022-07-26 05:43:36 -07:00
|
|
|
routing: {
|
|
|
|
request: {
|
|
|
|
method: 'GET',
|
|
|
|
url: '/api/card/',
|
|
|
|
},
|
|
|
|
},
|
2022-09-08 08:10:13 -07:00
|
|
|
action: 'Get many questions',
|
2022-07-26 05:43:36 -07:00
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'Result Data',
|
|
|
|
value: 'resultData',
|
|
|
|
description: 'Return the result of the question to a specific file format',
|
|
|
|
routing: {
|
|
|
|
request: {
|
|
|
|
method: 'POST',
|
|
|
|
url: '={{"/api/card/" + $parameter.questionId + "/query/" + $parameter.format}}',
|
|
|
|
returnFullResponse: true,
|
|
|
|
encoding: 'arraybuffer',
|
|
|
|
},
|
|
|
|
output: {
|
|
|
|
postReceive: [
|
2023-03-14 10:47:37 -07:00
|
|
|
async function (this, items, responseData) {
|
|
|
|
const datatype = this.getNodeParameter('format') as string;
|
2022-07-26 05:43:36 -07:00
|
|
|
|
2023-03-14 10:47:37 -07:00
|
|
|
if (datatype !== 'json') {
|
|
|
|
const binaryData = await this.helpers.prepareBinaryData(
|
|
|
|
responseData.body as Buffer,
|
|
|
|
'data',
|
|
|
|
responseData.headers['content-type'] as string,
|
|
|
|
);
|
|
|
|
|
|
|
|
// Transform items
|
|
|
|
items = items.map((item) => {
|
|
|
|
item.json = {};
|
|
|
|
item.binary = { ['data']: binaryData };
|
|
|
|
return item;
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
const results = jsonParse<IDataObject[]>(responseData.body as unknown as string);
|
|
|
|
items = results.map((result) => {
|
|
|
|
return {
|
|
|
|
json: {
|
|
|
|
...result,
|
|
|
|
},
|
|
|
|
};
|
|
|
|
});
|
2022-07-26 05:43:36 -07:00
|
|
|
}
|
2023-03-14 10:47:37 -07:00
|
|
|
return items;
|
2022-07-26 05:43:36 -07:00
|
|
|
},
|
|
|
|
],
|
|
|
|
},
|
|
|
|
},
|
2023-03-14 10:47:37 -07:00
|
|
|
action: 'Get the results from a question',
|
2022-07-26 05:43:36 -07:00
|
|
|
},
|
|
|
|
],
|
|
|
|
default: 'getAll',
|
|
|
|
},
|
|
|
|
];
|
|
|
|
|
|
|
|
export const questionsFields: INodeProperties[] = [
|
|
|
|
{
|
|
|
|
displayName: 'Question ID',
|
|
|
|
name: 'questionId',
|
|
|
|
type: 'string',
|
|
|
|
required: true,
|
|
|
|
placeholder: '0',
|
|
|
|
displayOptions: {
|
|
|
|
show: {
|
|
|
|
resource: ['questions'],
|
|
|
|
operation: ['get', 'resultData'],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
default: '',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
displayName: 'Format',
|
|
|
|
name: 'format',
|
|
|
|
type: 'options',
|
|
|
|
required: true,
|
|
|
|
options: [
|
|
|
|
{
|
|
|
|
name: 'CSV',
|
|
|
|
value: 'csv',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'JSON',
|
|
|
|
value: 'json',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
name: 'XLSX',
|
|
|
|
value: 'xlsx',
|
|
|
|
},
|
|
|
|
],
|
|
|
|
default: 'csv',
|
|
|
|
displayOptions: {
|
|
|
|
show: {
|
|
|
|
resource: ['questions'],
|
|
|
|
operation: ['resultData'],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
];
|