UNPKG

cloud-red

Version:

Serverless Node-RED for your cloud integration needs

122 lines (116 loc) 3.38 kB
/** * Copyright JS Foundation and other contributors, http://js.foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. **/ var runtimeAPI; const apiUtils = require('../util'); const { AWSProvider } = require('../../../editor-cloud-providers/aws'); const { userSettings } = require('..'); module.exports = { init: function(_runtimeAPI) { runtimeAPI = _runtimeAPI; }, get: function(req, res) { var version = req.get('Node-RED-API-Version') || 'v1'; if (!/^v[12]$/.test(version)) { return res.status(400).json({ code: 'invalid_api_version', message: 'Invalid API Version requested' }); } var opts = { user: req.user }; runtimeAPI.flows .getFlows(opts) .then(function(result) { if (version === 'v1') { res.json(result.flows); } else if (version === 'v2') { res.json(result); } }) .catch(function(err) { apiUtils.rejectHandler(req, res, err); }); }, post: async function(req, res) { var version = req.get('Node-RED-API-Version') || 'v1'; if (!/^v[12]$/.test(version)) { return res.status(400).json({ code: 'invalid_api_version', message: 'Invalid API Version requested' }); } var opts = { user: req.user, deploymentType: req.get('Node-RED-Deployment-Type') || 'full' }; if (opts.deploymentType !== 'reload') { if (version === 'v1') { opts.flows = { flows: req.body }; } else { opts.flows = req.body; } } let config = { localhost: false }; let cloudConfig = { profile: 'personal', region: 'ap-southeast-2', lambdaName: 'echo-aws', lambdaHandler: 'lambda.handler', // `handler` by default timeout: 30, memory: 256, useLocalDependencies: true, useS3Bucket: true }; if (config.localhost) { console.log('Deploying locally!!!!'); console.log(`userDir = ${userSettings.userDir}`); runtimeAPI.flows .setFlows(opts) .then(function(result) { if (version === 'v1') { res.status(204).end(); } else { res.json(result); } }) .catch(function(err) { apiUtils.rejectHandler(req, res, err); }); } else { console.log( `Deploying in cloud using profile: ${cloudConfig.profile} ...` ); const aws = new AWSProvider( userSettings.userDir, cloudConfig.lambdaName, cloudConfig.lambdaHandler, null, // version cloudConfig.profile, cloudConfig.region, cloudConfig.timeout, cloudConfig.memory, null, // runtime null // env ); console.log(aws); aws.createDeployment(); res.status(200).end(); } } };