Socket
Socket
Sign inDemoInstall

@semilimes/node-red-semilimes

Package Overview
Dependencies
34
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.10.2 to 1.0.0

src/downloader.html

55

examples/Control Lamp flow.json

@@ -343,2 +343,4 @@ [

"saveLocationType": "flow",
"saveRequestIdLocation": "",
"saveRequestIdLocationType": "msg",
"logToConsole": false,

@@ -352,22 +354,2 @@ "x": 910,

{
"id": "bbaca621aa7988a2",
"type": "filterSubmission",
"z": "03f230443c464b5e",
"name": "",
"reference": "myLampForm",
"referenceType": "str",
"messageId": "#:(file)::savedMessageId",
"messageIdType": "flow",
"saveLocation": "savedSubmission",
"saveLocationType": "msg",
"extractValues": true,
"x": 400,
"y": 420,
"wires": [
[
"8ae9ea17937ebc91"
]
]
},
{
"id": "6b2b5babc8813314",

@@ -650,6 +632,37 @@ "type": "function",

[
"bbaca621aa7988a2"
"f9182d6dea0f8988"
]
]
},
{
"id": "f9182d6dea0f8988",
"type": "filter",
"z": "03f230443c464b5e",
"connector": "",
"name": "",
"filter": "submission",
"reference": "myLampForm",
"referenceType": "str",
"messageId": "#:(file)::savedMessageId",
"messageIdType": "flow",
"extractValues": true,
"chat": "p2p",
"senderId": "",
"senderIdType": "str",
"groupChatId": "",
"groupChatIdType": "str",
"channelId": "",
"channelIdType": "str",
"requestId": "",
"requestIdType": "str",
"saveLocation": "savedSubmission",
"saveLocationType": "msg",
"x": 420,
"y": 420,
"wires": [
[
"8ae9ea17937ebc91"
]
]
}
]
{
"name": "@semilimes/node-red-semilimes",
"version": "0.10.2",
"version": "1.0.0",
"description": "The new semilimes connector which integrates with the public API",

@@ -19,44 +19,8 @@ "scripts": {

"listener": "src/listener.js",
"filter": "src/filter.js",
"uploader": "src/uploader.js",
"filterSubmission": "src/filters/filterSubmission.js",
"downloader": "src/downloader.js",
"tunnel": "src/tunnel.js",
"sme-main-core": "src/sme-main-core.js",
"sme-main-connector": "src/sme-main-connector.js",
"sme-main-intent": "src/sme-main-intent.js",
"sme-main-sender": "src/sme-main-sender.js",
"sme-main-listener": "src/sme-main-listener.js",
"sme-main-sshTunnel": "src/sme-main-sshTunnel.js",
"sme-main-formSaver": "src/sme-main-formSaver.js",
"sme-main-formLoader": "src/sme-main-formLoader.js",
"sme-main-formUpdater": "src/sme-main-formUpdater.js",
"sme-main-uploader": "src/sme-main-uploader.js",
"sme-comp-text": "src/data-components/sme-comp-text.js",
"sme-comp-html": "src/data-components/sme-comp-html.js",
"sme-comp-file": "src/data-components/sme-comp-file.js",
"sme-comp-contact": "src/data-components/sme-comp-contact.js",
"sme-comp-location": "src/data-components/sme-comp-location.js",
"sme-comp-webview": "src/data-components/sme-comp-webview.js",
"sme-comp-channel": "src/data-components/sme-comp-channel.js",
"sme-comp-tunnel": "src/data-components/sme-comp-tunnel.js",
"sme-comp-form": "src/data-components/sme-comp-form.js",
"sme-formComp-label": "src/form-components/sme-formComp-label.js",
"sme-formComp-textBox": "src/form-components/sme-formComp-textBox.js",
"sme-formComp-buttonList": "src/form-components/sme-formComp-buttonList.js",
"sme-formComp-singleChoice": "src/form-components/sme-formComp-singleChoice.js",
"sme-formComp-multiChoice": "src/form-components/sme-formComp-multiChoice.js",
"sme-formComp-switch": "src/form-components/sme-formComp-switch.js",
"sme-formComp-slider": "src/form-components/sme-formComp-slider.js",
"sme-formComp-datePicker": "src/form-components/sme-formComp-datePicker.js",
"sme-formComp-timePicker": "src/form-components/sme-formComp-timePicker.js",
"sme-formComp-locationPicker": "src/form-components/sme-formComp-locationPicker.js",
"sme-formComp-photoPicker": "src/form-components/sme-formComp-photoPicker.js",
"sme-formComp-filePicker": "src/form-components/sme-formComp-filePicker.js",
"sme-formComp-contactPicker": "src/form-components/sme-formComp-contactPicker.js",
"sme-formComp-groupChatPicker": "src/form-components/sme-formComp-groupChatPicker.js",
"sme-formComp-channelPicker": "src/form-components/sme-formComp-channelPicker.js",
"sme-formComp-bucketPicker": "src/form-components/sme-formComp-bucketPicker.js",
"sme-formComp-hiddenValue": "src/form-components/sme-formComp-hiddenValue.js",
"sme-formComp-qrCodeScanner": "src/form-components/sme-formComp-qrCodeScanner.js",
"sme-formComp-nfcReader": "src/form-components/sme-formComp-nfcReader.js",
"sme-filter-formSubmission": "src/filters/sme-filter-formSubmission.js"
"sme-main-connector": "src/sme-main-connector.js"
}

@@ -67,2 +31,3 @@ },

"form-data": "^4.0.0",
"mime-types": "^2.1.35",
"node-forge": "^1.3.1",

@@ -69,0 +34,0 @@ "ssh2": "^1.11.0",

@@ -6,5 +6,2 @@ # Node-RED semilimes connector

> **Important Note**: the current version (0.10.*) contains a new set of nodes (semilimesAPI section), while leaving the old nodes for backwards compatibility (semilimesAPI_deprecated section), to let current users transition their existing flows to the new node set.
> The next release (1.0.0) will permanently remove all the deprecated nodes, so make sure you have completed the transition before further update this package.
[Github project](https://github.com/semilimes/nodered-publicapi-connector)

@@ -11,0 +8,0 @@

@@ -127,4 +127,4 @@ "use strict";

optionsFieldValue.push({
name: button.value,
value: button.id
name: button.name,
value: button.value
});

@@ -149,4 +149,4 @@ });

optionsFieldValue.push({
name: choice.value,
value: choice.id
name: choice.name,
value: choice.value
});

@@ -153,0 +153,0 @@ });

@@ -44,2 +44,5 @@ "use strict";

this.saveRequestIdLocation = config.saveRequestIdLocation;
this.saveRequestIdLocationType = config.saveRequestIdLocationType;
this.logToConsole = config.logToConsole;

@@ -67,2 +70,18 @@

switch (node.actionName) {
case 'account_my': {
smeHelper.clearSendingBox(msg);
var request = {
requestId: getNewRequestId(),
endpoint: "/account/my",
httpMethod: "GET",
parameters: {
main: true,
sub: true,
shared: true,
details: true
}
};
smeHelper.addSendingMsg(msg, request);
break;
}
case 'account_contacts': {

@@ -165,3 +184,4 @@ smeHelper.clearSendingBox(msg);

body: {
title: smeHelper.getNodeConfigValue(node, msg, node.titleType, node.title)
title: smeHelper.getNodeConfigValue(node, msg, node.titleType, node.title),
recipientIds: []
}

@@ -329,2 +349,33 @@ };

});
//Extract request id(s)
var requestIdToSave = undefined
if (smeSendingBox.length === 1) {
requestIdToSave = smeSendingBox[0].requestId;
} else if (smeSendingBox.length > 1) {
requestIdToSave = [];
smeSendingBox.forEach(smeMsg => {
requestIdToSave.push(smeMsg.requestId);
});
}
//Save request id in saved location
if (requestIdToSave !== undefined && node.saveRequestIdLocation) {
switch (node.saveRequestIdLocationType) {
case 'msg':
msg[node.saveRequestIdLocation] = requestIdToSave;
break;
case 'flow':
node.context().flow.set(node.saveRequestIdLocation, requestIdToSave);
break;
case 'global':
node.context().global.set(node.saveRequestIdLocation, requestIdToSave);
break;
default:
break;
}
} else {
node.warn('Save requestId location value is invalid!');
}
smeHelper.clearSendingBox(msg);

@@ -336,2 +387,9 @@ send(msg, false);

// Send message via HTTP REST
var entityToSave = undefined;
if (smeSendingBox.length === 1) {
entityToSave = "";
} else if (smeSendingBox.length > 1) {
entityToSave = [];
}
smeSendingBox.forEach((smeMsg, index) => {

@@ -348,27 +406,39 @@ var promise = smeConnector.sendMessage(smeMsg, node.logToConsole);

if (saveMode) {
var tempValueToSave = undefined;
switch (saveMode) {
case 'messageId':
tempValueToSave = value.data?.sentMessage?.messageId;
break;
case 'groupChatId':
tempValueToSave = value.data?.createdGroupChat?.groupChatId;
break;
case 'channelId':
tempValueToSave = value.data?.createdChannel?.channelId;
break;
default:
break;
}
//Add tempValue to entityToSave
if(tempValueToSave) {
if (Array.isArray(entityToSave)) {
entityToSave.push(tempValueToSave);
} else {
entityToSave = tempValueToSave;
}
}
}
if (saveMode) {
if (node.saveLocation) {
var valueToSave = undefined;
switch (saveMode) {
case 'messageId':
valueToSave = value.data?.sentMessage?.messageId;
break;
case 'groupChatId':
valueToSave = value.data?.createdGroupChat?.groupChatId;
break;
case 'channelId':
valueToSave = value.data?.createdChannel?.channelId;
break;
default:
break;
}
if (valueToSave) {
//Finally save entity to location
if (entityToSave) {
switch (node.saveLocationType) {
case 'msg':
msg[node.saveLocation] = valueToSave;
msg[node.saveLocation] = entityToSave;
break;
case 'flow':
node.context().flow.set(node.saveLocation, valueToSave);
node.context().flow.set(node.saveLocation, entityToSave);
break;
case 'global':
node.context().global.set(node.saveLocation, valueToSave);
node.context().global.set(node.saveLocation, entityToSave);
break;

@@ -375,0 +445,0 @@ default:

@@ -122,7 +122,7 @@ "use strict";

error => {
res.sendStatus(500).send(error);
res.status(500).send(error);
}
)
.catch(error => {
res.sendStatus(500).send(error);
res.status(500).send(error);
})

@@ -145,7 +145,7 @@ });

error => {
res.sendStatus(500).send(error);
res.status(500).send(error);
}
)
.catch(error => {
res.sendStatus(500).send(error);
res.status(500).send(error);
})

@@ -172,7 +172,8 @@ });

error => {
res.sendStatus(500).send(error);
console.log(error);
res.status(500).send(error);
}
)
.catch(error => {
res.sendStatus(500).send(error);
res.status(500).send(error);
})

@@ -179,0 +180,0 @@ });

@@ -10,2 +10,3 @@ "use strict";

const axios = require('axios');
const mime = require('mime-types');

@@ -377,2 +378,3 @@ module.exports = function (RED) {

function callApi(endpoint, method, data, logEnabled = false) {
//Upload file
if (endpoint == "/service/file/upload") {

@@ -406,4 +408,56 @@

});
//Download file
} else if (endpoint == "/service/file/download") {
} else {
return new Promise((resolve, reject) => {
if (!data || !data.filePath || !data.fileId) {
reject("Data is empty!");
}
//const writer = fs.createWriteStream(data.filePath);
var localData = data && JSON.parse(JSON.stringify(data));
delete localData.filePath;
let config = {
method: method,
url: `${serverApiURL}${endpoint}`,
responseType: 'stream',
headers: {
'Authorization': `Bearer ${apiKey}`,
},
data : localData
};
axios.request(config)
.then((response) => {
const contentType = response.headers['content-type'];
const mimeExtension = mime.extension(contentType);
const fileExtension = mimeExtension ? "."+mimeExtension : "";
const writer = fs.createWriteStream(`${data.filePath}${fileExtension}`);
response.data.pipe(writer);
let error = null;
writer.on('error', err => {
error = err;
writer.close();
console.error('Error when writing downloaded file: ', error);
reject(err);
});
writer.on('close', () => {
if (!error) {
//console.log('Successfully downloaded file in: ', data.filePath+fileExtension);
resolve(data.filePath+fileExtension);
}
});
})
.catch((error) => {
console.error('Error when calling downloader API: ', error);
reject(error);
})
});
}
else {
//Message endpoints

@@ -434,3 +488,3 @@ return new Promise((resolve, reject) => {

'Content-Type': 'application/json; charset=UTF-8',
'Content-Length': (body && body.length) || 0,
'Content-Length': (body && Buffer.byteLength(body, 'utf-8')) || 0
},

@@ -437,0 +491,0 @@ timeout: 5000

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc