diff --git a/storage/ddb/69-ddbout.html b/storage/ddb/69-ddbout.html
index 70235393..33b5463e 100644
--- a/storage/ddb/69-ddbout.html
+++ b/storage/ddb/69-ddbout.html
@@ -16,12 +16,8 @@
+
+
+
+
diff --git a/storage/ddb/69-ddbout.js b/storage/ddb/69-ddbout.js
index 8f51576b..8cf0d753 100644
--- a/storage/ddb/69-ddbout.js
+++ b/storage/ddb/69-ddbout.js
@@ -16,18 +16,65 @@
var RED = require(process.env.NODE_RED_HOME+"/red/red");
var util = require("util");
+var querystring = require('querystring');
var aws = require("aws-sdk");
var attrWrapper = require("dynamodb-data-types").AttributeValue;
+function DDBNode(n) {
+ RED.nodes.createNode(this, n);
+ var credentials = RED.nodes.getCredentials(n.id);
+ if (credentials) {
+ this.accessKey = credentials.accessKey;
+ this.secretAccessKey = credentials.secretAccessKey;
+ }
+}
+RED.nodes.registerType("awscredentials", DDBNode);
+
+RED.app.get('/awscredentials/:id', function(req, res) {
+ var credentials = RED.nodes.getCredentials(req.params.id);
+ if (credentials) {
+ res.send(JSON.stringify({ accessKey: credentials.accessKey, secretAccessKey: credentials.secretAccessKey }));
+ } else {
+ res.send(JSON.stringify({}));
+ }
+});
+
+RED.app.delete('/awscredentials/:id', function(req, res) {
+ RED.nodes.deleteCredentials(req.params.id);
+ res.send(200);
+});
+
+RED.app.post('/awscredentials/:id', function(req, res) {
+ var body = "";
+ req.on("data", function(chunk) {
+ body += chunk;
+ });
+ req.on("end", function() {
+ var newCreds = querystring.parse(body);
+ var credentials = RED.nodes.getCredentials(req.params.id) || {};
+ if (newCreds.accessKey == null || newCreds.accessKey == "") {
+ delete credentials.accessKey;
+ } else {
+ credentials.accessKey = newCreds.accessKey || credentials.accessKey;
+ }
+ if (newCreds.secretAccessKey == null || newCreds.secretAccessKey == "") {
+ delete credentials.secretAccessKey;
+ } else {
+ credentials.secretAccessKey = newCreds.secretAccessKey || credentials.secretAccessKey;
+ }
+ RED.nodes.addCredentials(req.params.id, credentials);
+ res.send(200);
+ });
+});
+
function DDBOutNode(n) {
RED.nodes.createNode(this, n);
- this.accessKey = n.accessKey;
- this.secretAccessKey = n.secretAccessKey;
+ this.credentials = RED.nodes.getNode(n.credentials);
this.region = n.region || "us-east-1";
this.table = n.table;
- aws.config.update({ accessKeyId: this.accessKey,
- secretAccessKey: this.secretAccessKey,
+ aws.config.update({ accessKeyId: this.credentials.accessKey,
+ secretAccessKey: this.credentials.secretAccessKey,
region: this.region });
var ddb = new aws.DynamoDB();