forked from grncdr/node-swiz
-
Notifications
You must be signed in to change notification settings - Fork 0
/
demo.js
51 lines (45 loc) · 1.26 KB
/
demo.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var swiz = require('./lib/swiz');
var Swiz = require('./lib/swiz').Swiz;
var Valve = require('./lib/swiz').Valve;
var Chain = require('./lib/swiz').Chain;
var defToValve = require('./lib/swiz').defToValve;
var O = swiz.struct.Obj;
var F = swiz.struct.Field;
// Note: There's one set of definitions that control both serialization
// and validation
var def = [
O('Node',
{
'fields': [
F('key', {'val' : new Chain().isString()}),
F('ip_address_v4', {'val' : new Chain().isIP()}),
F('name', {'val' : new Chain().isString(), 'filterFrom': ['public']})
],
'plural': 'nodes'
})
];
var validity = defToValve(def);
var schema = validity.Node;
var v = new Valve(schema);
// Generic payload
var createPayload = {
key: '1234',
ip_address_v4: '1.2.0.4',
name: 'barrr'
};
console.log('validate a payload:\n');
// Validate the generic payload
v.check(createPayload, function(err, cleaned) {
var sw = new Swiz(def, { 'for': 'public' });
if (err) {
console.error(err);
} else {
console.log('\n\nserialize an object\n');
cleaned.getSerializerType = function() {return 'Node';};
sw.serialize(swiz.SERIALIZATION.SERIALIZATION_JSON, 1, cleaned,
function(err, results) {
console.log(results);
}
);
}
});