0.2.4 • Published 9 years ago
msh v0.2.4
= NodeMSH: A NodeJS implementation of Micro Service Shell
In http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/[Asciidoc] format.
:toc:
== Quick Start Examples
=== GETing POSTing PUTing and PIPEing
var msh = require('msh');
var h = 'localhost';
var p = mockMshServicePort;
var url = '/some/path';
var callback = function(actions) {
// Great, msh finished successfully now what?
console.log("action 0" + JSON.stringify(actions[0]));
console.log("action 1" + JSON.stringify(actions[1]));
console.log("action 2" + JSON.stringify(actions[2]));
console.log("action 3" + JSON.stringify(actions[3]));
console.log("action 4" + JSON.stringify(actions[4]));
console.log("action 5" + JSON.stringify(actions[5]));
assert.equal(actions[0].type, 'http'); // every action has a type
assert.equal(actions[0].method, 'GET'); // every http type has a method
assert.equal(actions[1].type, 'pipe'); // this means we piped data from one action to another
assert.equal(actions[2].statusCode, 201); // get http response status codes
assert.equal(actions[5].response.message, 'some test data'); // put payload/response data
assert.equal(true, actions.allOk()); // all http return code > 399
done();
};
var errCallback = function(status, host, data) {
// Oh noes! An error! Do something good to restore your Karma
};
var testTransformer = function(data) {return '{"message": "this was transformed from:", "oldmessage": ' + data + ' }'};
var putData = '{"data": "putData"}';
var host = "localhost";
var port = 8080;
// Here's the magic...
// Eh? what happened to all the nested callbacks?
msh.init(callback, errCallback)
.get(h, p, '/path1')
.pipe(testTransformer)
.post(h, p, '/path2')
.del(h, p, '/path3')
.get(h, p, '/path4')
.put(h, p, '/path5', putData)
.end();
=== Using predicates to halt execution
var msh = require('msh');
var h = 'localhost';
var p = mockMshServicePort;
var url = '/some/path';
var payload = {"id":"sentiment","image":"sp_platform/uber-any","env":{"GIT_REPO_URL":"https://github.com/fuzzy-logic/sentiment.git", "DNS": "sentiment.muoncore.io"}};
var errCallback = function(status, host, data) {
console.log('errCallback status=%s, host=%s data=%s', status, host, data);
assert.ok(false);
};
var callback = function(actions) {
console.log('msh callback...');
// console.dir(actions);
var getStatus = actions[0].statusCode;
var postStatus = actions[2].statusCode;
console.log('action0: ' + JSON.stringify(actions[0]));
assert.equal(200, actions[0].statusCode);
assert.equal('http', actions[0].type);
assert.equal('GET', actions[0].method);
assert.ok(actions[0].response);
console.log('action1: ' + JSON.stringify(actions[1]));
assert.equal('stopPredicate', actions[1].type);
assert.equal(true, actions[1].response); //predicate returned false
console.log('action2: ' + JSON.stringify(actions[2]));
assert.equal('http', actions[2].type);
assert.equal('POST', actions[2].method);
assert.equal(undefined, actions[2].response);
done();
};
var predicate = function(prevAction) {
//console.log("predicate prevAction=%s", JSON.stringify(prevAction));
return true
};
console.log('msh starting...');
msh.init(callback, errCallback).get(h, p, url, payload).stop(predicate).post(h, p, url).end();
=== Using URL Templating
var h = 'localhost';
var p = 80;
var url = '/some/path';
var url2 = '/{first}/{second}/{third}';
var errCallback = function(status, host, data) {
console.log('errCallback status=%s, host=%s data=%s', status, host, data);
};
var callback = function(actions) {
var get1Id = actions[0].response.id;
assert.equal(url2, actions[2].pathTemplate);
assert.equal('/foo/bar/' + get1Id, actions[2].path);
done();
};
var processor = function (result) {
return {
first: "foo",
second: "bar",
third: result.id // result = {id: 3}
}
}
msh.init(callback, errCallback).get(h, p, url).template(processor).get(h, p, url2).end();
0.2.4
9 years ago
0.2.3
9 years ago
0.2.2
9 years ago
0.2.1
10 years ago
0.2.0
10 years ago
0.1.9
10 years ago
0.1.7
10 years ago
0.1.6
10 years ago
0.1.5
10 years ago
0.1.4
10 years ago
0.1.3
10 years ago
0.1.1
10 years ago
0.1.0
10 years ago
0.0.8
10 years ago
0.0.6
10 years ago
0.0.5
10 years ago
0.0.4
10 years ago
0.0.3
10 years ago
0.0.2
10 years ago
0.0.1
10 years ago