n8n-nodes-putio
Version:
n8n node for Put.io API integration
298 lines • 13.1 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Putio = void 0;
const listFiles_1 = require("./operations/listFiles");
const getFile_1 = require("./operations/getFile");
const createFolder_1 = require("./operations/createFolder");
const uploadFile_1 = require("./operations/uploadFile");
const downloadFile_1 = require("./operations/downloadFile");
class Putio {
constructor() {
this.description = {
displayName: 'Put.io',
name: 'putio',
icon: 'file:putio.svg',
group: ['transform'],
version: 1,
subtitle: '={{$parameter["operation"]}}',
description: 'Interact with Put.io API',
defaults: {
name: 'Put.io',
},
inputs: ['main'],
outputs: ['main'],
properties: [
{
displayName: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
options: [
{
name: 'File',
value: 'file',
},
],
default: 'file',
},
{
displayName: 'Operation',
name: 'operation',
type: 'options',
noDataExpression: true,
displayOptions: {
show: {
resource: ['file'],
},
},
options: [
{
name: 'List Files & Folders',
value: 'listFiles',
description: 'List files and folders in a directory',
action: 'List files and folders',
routing: {
request: {
method: 'GET',
url: '=/files/list',
qs: {
parent_id: '={{$parameter.folderId}}',
},
},
output: {
postReceive: [
{
type: 'set',
properties: {
value: '={{ { "files": $response.body.files, "folders": $response.body.folders } }}',
},
},
],
},
},
},
{
name: 'Get Files & Folders',
value: 'getFile',
description: 'Get a file or folder by ID or path',
action: 'Get a file or folder',
routing: {
request: {
method: 'GET',
url: '=/files/{{$parameter.fileId}}',
},
output: {
postReceive: [
{
type: 'set',
properties: {
value: '={{ { "file": $response.body } }}',
},
},
],
},
},
},
{
name: 'Create Folder',
value: 'createFolder',
description: 'Create a new folder',
action: 'Create a folder',
routing: {
request: {
method: 'POST',
url: '=/files/create-folder',
body: {
name: '={{$parameter.folderName}}',
parent_id: '={{$parameter.parentId}}',
},
},
output: {
postReceive: [
{
type: 'set',
properties: {
value: '={{ { "folder": $response.body } }}',
},
},
],
},
},
},
{
name: 'Upload File',
value: 'uploadFile',
description: 'Upload a file to Put.io',
action: 'Upload a file',
routing: {
request: {
method: 'POST',
url: '=/files/upload',
body: {
file: '={{$parameter.file}}',
parent_id: '={{$parameter.parentId}}',
},
},
output: {
postReceive: [
{
type: 'set',
properties: {
value: '={{ { "file": $response.body } }}',
},
},
],
},
},
},
{
name: 'Download File',
value: 'downloadFile',
description: 'Get a download URL for a file from Put.io',
action: 'Get a download URL for a file',
routing: {
request: {
method: 'GET',
url: '=/files/{{$parameter.fileId}}/download',
},
output: {
postReceive: [
{
type: 'set',
properties: {
value: '={{ { "downloadUrl": $response } }}',
},
},
],
},
},
},
],
default: 'listFiles',
},
{
displayName: 'Folder ID',
name: 'folderId',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['file'],
operation: ['listFiles'],
},
},
description: 'The ID of the folder to list files from',
},
{
displayName: 'File ID',
name: 'fileId',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['file'],
operation: ['getFile', 'downloadFile'],
},
},
description: 'The ID of the file to get or download',
},
{
displayName: 'Folder Name',
name: 'folderName',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['file'],
operation: ['createFolder'],
},
},
description: 'The name of the folder to create',
},
{
displayName: 'Parent ID',
name: 'parentId',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['file'],
operation: ['createFolder', 'uploadFile'],
},
},
description: 'The ID of the parent folder',
},
{
displayName: 'File',
name: 'file',
type: 'string',
default: '',
displayOptions: {
show: {
resource: ['file'],
operation: ['uploadFile'],
},
},
description: 'The file to upload',
},
],
};
}
execute() {
return __awaiter(this, void 0, void 0, function* () {
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 {
if (resource === 'file') {
if (operation === 'listFiles') {
const responseData = yield listFiles_1.listFiles.call(this, i);
returnData.push(...responseData);
}
else if (operation === 'getFile') {
const responseData = yield getFile_1.getFile.call(this, i);
returnData.push(...responseData);
}
else if (operation === 'createFolder') {
const responseData = yield createFolder_1.createFolder.call(this, i);
returnData.push(...responseData);
}
else if (operation === 'uploadFile') {
const responseData = yield uploadFile_1.uploadFile.call(this, i);
returnData.push(...responseData);
}
else if (operation === 'downloadFile') {
const responseData = yield downloadFile_1.downloadFile.call(this, i);
returnData.push(...responseData);
}
}
}
catch (error) {
if (this.continueOnFail()) {
returnData.push({
json: {
error: error.message,
},
});
continue;
}
throw error;
}
}
return [returnData];
});
}
}
exports.Putio = Putio;
//# sourceMappingURL=Putio.node.js.map