Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

fh-fhc

Package Overview
Dependencies
Maintainers
1
Versions
121
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fh-fhc - npm Package Compare versions

Comparing version 0.6.9-63 to 0.6.9-66

lib/endpoints.js

1

fh-fhc.js

@@ -18,4 +18,5 @@ exports.login = require('./lib/login.js');

exports.account = require('./lib/account.js');
exports.endpoints = require('./lib/endpoints.js');
exports.cloudfoundry = require('./lib/cloudfoundry.js');
module.exports = act;
act.usage = "\nfhc act <app-id> <server-function> <params>";
act.usage = "\nfhc act <app-id> <server-function> <params> [--live]";

@@ -12,2 +12,4 @@ var log = require("./utils/log");

var util = require('util');
var ini = require('./utils/ini');
var request = require('request');

@@ -18,8 +20,23 @@ // main act entry point

var target = ini.get('live') ? 'live' : 'development';
// tmp hack for using as a script, check if the last arg is trying to override target
if (args[args.length -1] === 'live' || args[args.length -1] === 'development') {
target = args[args.length -1];
args.pop();
}
var appId = fhc.appId(args[0]);
var funct = args[1];
var data = {};
var data = args[2] ? JSON.parse(args[2]): {};
log.silly(data, "act params");
if (args[2]) data = JSON.parse(args[2]);
log.silly(data, "params");
if ("live" === target) {
doLiveAct(appId, funct, data, cb);
}else {
doMillicoreAct(appId, funct, data, cb);
}
};
// TODO - full development proxy (no proxy through millicore)
function doMillicoreAct(appId, funct, data, cb) {
millicore.widgForAppId(appId, function (err, widgId) {

@@ -37,2 +54,14 @@ if(err) return cb(err);

});
}
// Do our live action
// TODO - cache the endpoint lookup (so we don't have to call every time)
function doLiveAct(appId, funct, data, cb) {
common.getAppNameUrl(appId, 'live', function(err, appName, appUrl) {
// post to /cloud
request({uri: appUrl + "/cloud/" + funct, method: 'POST', json: data}, function (err, response, body) {
log.silly(response, "act response");
return cb(common.nullToUndefined(err), body);
});
});
};

@@ -39,0 +68,0 @@

60

lib/cf.js
module.exports = cf;
cf.usage = "\nfhc cf act <app-id> <server-function> <params>"
+ "\nfhc cf apps"
+ "\nfhc cf app <app-id>";
+ "\nfhc cf url <app-id>";
cf.usage = "\nfhc cf apps"
+ "\nfhc cf app <app-name>";
var log = require("./utils/log");

@@ -13,3 +11,2 @@ var fhc = require("./fhc");

var util = require('util');
var fhcluster, cftarget, cfuser, cfpwd;
var vmcjs = require('vmcjs');

@@ -25,12 +22,4 @@ var common = require('./common.js');

if (args.length != 1) return unknown("app", cb);
else return app(fhc.appId(args[0]), cb);
else return app(args[0], cb);
};
case "act": {
if (args.length < 2) return unknown("act", cb);
return act(fhc.appId(args[0]), args[1], args[2], cb);
};
case "url": {
if (args.length != 1) return unknown("url", cb);
else return url(fhc.appId(args[0]), cb);
};
default: return unknown(action, cb);

@@ -46,37 +35,2 @@ }

// gets the app endpoint from the dftarget
function getAppUrl(appId){
var appName = common.getAppName(appId);
var cftarget = fhc.config.get("cftarget");
return cftarget.replace('api', appName);
};
// do our act call
function act(appId, funct, params, cb) {
var data = {};
if (params) data = JSON.parse(params);
log.silly(data, "cf act params");
// replace 'api' with the modified appId to get our endpoint
var appUrl = getAppUrl(appId);
log.verbose('' + appUrl, "CloudFoundry App endpoint");
log.verbose('' + funct, "Function");
// post to /cloud
fhreq.POST(appUrl, 'cloud/' + funct, data, function (err, remoteData, raw, response) {
if (err) {
log.error(err, "Error in cf act");
log.verbose(remoteData, "list");
}
return cb(err, remoteData);
});
};
// given an app id, returns its DynoFarm endpoint
function url(appId, cb) {
var appName = common.getAppName(appId);
var url = getAppUrl(appId);
return cb(undefined, {name: appName, url:url});
};
// get our CloudFoundry apps

@@ -99,4 +53,3 @@ function apps(cb) {

// get CF info for a single app
function app(appId, cb) {
var appName = common.getAppName(appId).toLowerCase();
function app(appName, cb) {
log.verbose(appName, "AppName");

@@ -122,3 +75,3 @@

if (argv.length === 2) {
var cmds = ["act", "apps", "app", "url"];
var cmds = ["act", "apps", "app"];
return cb(null, cmds);

@@ -133,3 +86,2 @@ }

case "app":
case "url":
return cb(null, Object.keys(types));

@@ -136,0 +88,0 @@ default: return cb(null, []);

@@ -11,3 +11,2 @@ // Misc common functions..

// Common API call to FeedHenry

@@ -72,16 +71,10 @@ exports.doApiCall = function(host, uri, payload, errorMsg, cb) {

// gets our app name (as it will be when staged)
exports.getAppName = function(appId){
var fhcluster = fhc.config.get("fhcluster");
//
// Note: we replace _ and - with 0's
//
var app = appId.replace(/_/g, '0');
app = app.replace(/-/g, '0');
log.silly(fhcluster, 'fh cluster');
log.silly(appId, 'cf appId');
var appName = fhcluster + "-" + app;
return appName.toLowerCase();
// gets our app name via 'endpoints' api
exports.getAppNameUrl = function(appId, env, cb){
exports.doApiCall(fhreq.getFeedHenryUrl(), "box/srv/1.1/ide/" + fhc.domain + "/app/endpoints", {payload: {guid: appId}}, "", function(err, data){
if(err) return cb(err);
log.verbose(data, "endpoints");
return cb(undefined, data.endpoints[env + '-name'], data.endpoints[env + '-url']);
});
};

@@ -261,2 +254,8 @@

// Annoyingly, 'request' returns nulls, the rest of FHC uses undefined, so return undefined to keep
// things consistent.
exports.nullToUndefined = function(err) {
return err == null? undefined: err;
};
exports.createNVTable = createNVTable;

@@ -263,0 +262,0 @@ exports.createObjectTable = createObjectTable;

@@ -9,8 +9,6 @@ module.exports = df;

+ "\nfhc df apps"
+ "\nfhc df logs <app-id>"
+ "\nfhc df start <app-id>"
+ "\nfhc df stop <app-id>"
+ "\nfhc df delete <app-id>"
+ "\nfhc df act <app-id> <server-function> <params>"
+ "\nfhc df url <app-id> (returns the full DynoFarm url given an appId)";
+ "\nfhc df logs <app-name>"
+ "\nfhc df start <app-name>"
+ "\nfhc df stop <app-name>"
+ "\nfhc df delete <app-name>";

@@ -29,2 +27,3 @@ var log = require("./utils/log");

// main DynoFarm entry point
// note app-name here is the DF app name, not the Millicore guid (i.e. we talk directly to DF)
function df (args, cb) {

@@ -38,27 +37,18 @@ var action = args.shift();

if (args.length != 1) return unknown("logs", cb);
else return logs(fhc.appId(args[0]), cb);
else return logs(args[0], cb);
};
case "stop": {
if (args.length != 1) return unknown("stop", cb);
else return stop(fhc.appId(args[0]), cb);
else return stop(args[0], cb);
};
case "start": {
if (args.length != 1) return unknown("start", cb);
else return start(fhc.appId(args[0]), cb);
else return start(args[0], cb);
};
case "restart": {
if (args.length != 1) return unknown("restart", cb);
else return restart(fhc.appId(args[0]), cb);
else return restart(args[0], cb);
};
case "url": {
if (args.length != 1) return unknown("url", cb);
else return url(fhc.appId(args[0]), cb);
};
case "act": {
if (args.length < 2) return unknown("act", cb);
return act(fhc.appId(args[0]), args[1], args[2], cb);
};
case "delete": {
if (args.length < 1) return unknown("delete", cb);
//todo make work with alias
else return deleteApps(args, cb);

@@ -70,38 +60,6 @@ };

// gets the app endpoint from the dftarget
function getAppUrl(appId){
var appName = common.getAppName(appId);
var df = fhc.config.get("dynofarm");
var uri = require('url').parse(df);
// replace 'api' with the modified appId to get our enpoint
var port = uri.port ? ":" + uri.port : "";
var url = uri.protocol + "//" + appName + "." + uri.hostname + port;
url = url.replace(/\.api\./g, '.');
return url;
}
// our 'act' function
function act(appId, funct, params, cb) {
var data = {};
if (params) data = JSON.parse(params);
log.silly(data, "df act params");
// firgure out our app endpoint
var appUrl = getAppUrl(appId);
log.verbose('' + appUrl, "App endpoint");
log.verbose('' + funct, "Calling DF function");
// post to /cloud
request({uri: appUrl + "/cloud/" + funct, method: 'POST', json: data}, function (err, response, body) {
log.silly(response);
return cb(nullToUndefined(err), body);
});
};
// ping
function pingVersion (pingVersion, cb) {
request(getDynoFarmUrl() + "sys/info/" + pingVersion, function (err, response, body) {
return cb(nullToUndefined(err), body);
return cb(common.nullToUndefined(err), body);
});

@@ -143,3 +101,3 @@ };

request(getDynoFarmUrl() + "apps", function (err, response, body) {
if (err) return cb(nullToUndefined(err));
if (err) return cb(common.nullToUndefined(err));
var apps;

@@ -161,5 +119,5 @@ try{

// DynoFarm logs
function logs(appId, cb) {
request(getDynoFarmUrl() + "logs/" + appId, function (err, response, body) {
return cb(nullToUndefined(err), body);
function logs(appName, cb) {
request(getDynoFarmUrl() + "logs/" + appName, function (err, response, body) {
return cb(common.nullToUndefined(err), body);
});

@@ -169,5 +127,5 @@ };

// Stop app
function stop(appId, cb) {
request(getDynoFarmUrl() + "stop/" + appId, function (err, response, body) {
return cb(nullToUndefined(err), body);
function stop(appName, cb) {
request(getDynoFarmUrl() + "stop/" + appName, function (err, response, body) {
return cb(common.nullToUndefined(err), body);
});

@@ -177,4 +135,4 @@ };

// Start app
function start(appId, cb) {
request(getDynoFarmUrl() + "start/" + appId, function (err, response, body) {
function start(appName, cb) {
request(getDynoFarmUrl() + "start/" + appName, function (err, response, body) {
if(err) return cb(err);

@@ -194,3 +152,3 @@

return cb(nullToUndefined(err), app);
return cb(common.nullToUndefined(err), app);
});

@@ -200,4 +158,4 @@ };

// Restart app
function restart(appId, cb) {
request(getDynoFarmUrl() + "restart/" + appId, function (err, response, body) {
function restart(appName, cb) {
request(getDynoFarmUrl() + "restart/" + appName, function (err, response, body) {
if(err) return cb(err);

@@ -216,13 +174,6 @@ if(response.statusCode !== 200) return cb("Bad response: " + response.statusCode + " " + body);

return cb(nullToUndefined(err), app);
return cb(common.nullToUndefined(err), app);
});
};
// Given an app id, returns its DynoFarm endpoint
function url(appId, cb) {
var appName = common.getAppName(appId);
var url = getAppUrl(appId);
return cb(undefined, {name: appName, url:url});
};
function unknown (action, cb) {

@@ -245,12 +196,6 @@ var msg = action ? "Wrong arguments for or unknown action: " + action + "\n" : "";

// Annoyingly, 'request' returns nulls, the rest of FHC uses undefined, so return undefined to keep
// things consistent.
function nullToUndefined(err) {
return err == null? undefined: err;
}
// delete an app
function deleteApp(appId, cb) {
request({url: getDynoFarmUrl() + "delete/" + appId, method: 'POST'}, function (err, response, body) {
return cb(nullToUndefined(err), body);
function deleteApp(appName, cb) {
request({url: getDynoFarmUrl() + "delete/" + appName, method: 'POST'}, function (err, response, body) {
return cb(common.nullToUndefined(err), body);
});

@@ -268,3 +213,3 @@ };

if (argv.length === 2) {
var cmds = ["apps", "logs", "start", "stop", "delete", "act", "url", "version"];
var cmds = ["apps", "logs", "start", "stop", "delete", , "version"];
return cb(null, cmds);

@@ -280,4 +225,2 @@ }

case "delete":
case "act":
case "url":
case "version":

@@ -284,0 +227,0 @@ return cb(null, Object.keys(types));

@@ -98,2 +98,3 @@ process.title = "fhc";

,'df'
,'endpoints'

@@ -100,0 +101,0 @@ ]

@@ -49,3 +49,2 @@ // defaults, types, and shorthands.

, cfpwd: ""
, fhcluster: ""
, editor : process.env.EDITOR || "vi"

@@ -100,3 +99,2 @@ , global : false

, cfpwd : String
, fhcluster : String
, editor : path

@@ -103,0 +101,0 @@ , global : Boolean

@@ -5,3 +5,3 @@ {

"keywords" : [ "cli", "feedhenry" ],
"version": "0.6.9-63",
"version": "0.6.9-66",
"preferGlobal" : true,

@@ -8,0 +8,0 @@ "homepage" : "http://git.io/fh-fhc",

@@ -1,1 +0,1 @@

0.6.9-63
0.6.9-66

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc