-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathrender.js
70 lines (62 loc) · 1.5 KB
/
render.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
var js2xmlparser = require("js2xmlparser");
/**
* To parse ctx.body to the format which has been set.
*
* @param {String} format
* @param {String} path ctx.path
* @param {Number} status HTTP Code
* @param {String} msg Message
* @param {Object} body data
* @param {Object} fields fields name
* @return {String} formated data
* @api private
*/
exports.format = function(format, path, status, msg, body, fields) {
return this[format]({
path: path,
status: status,
message: msg,
data: body
}, fields);
};
/**
* JSON Result Format
* @param {Object} data data.path String
* data.status HTTP Code
* data.message String of HTTP Status
* data.data Real data
* @return {Object} Formated data
* @api private
*/
exports.json = function(data, fields) {
var res = {};
for (var key in fields) {
res[fields[key]] = data[key]
}
return res;
};
/**
* XML Result Format
* @param {Object} data Real data
* @return {String} String of XML Document
* @api private
*/
exports.xml = function(data, fields) {
var json = this.json(data, fields);
return js2xmlparser('response', json, {
wrapArray : {
enabled : false
},
prettyPrinting: {
enabled : false
}
});
};
exports.checkFormat = function(_format) {
var f = this.query.format || '';
f = f.toLowerCase();
if (~['json', 'xml'].indexOf(f)) {
return f;
}
return this.accepts(_format) || _format[0];
};