arrow-docgen
Version:
Arrow API Documentation Generator
58 lines (53 loc) • 1.65 kB
JavaScript
// jscs:disable jsDoc
var _ = require('lodash');
function generate(object, api, endpoint, opts) {
var code = [];
code.push('\t### Node.js Example for ' + endpoint.name);
code.push('\tThis is an example you can use in your node app:');
code.push('```node.js');
code.push('var request = require("request");');
if (object.server.auth) {
var auth = object.server.auth;
if (auth.type === 'basic' || auth.type === 'ldap') {
opts.auth = {
user: auth.apikey || 'YOUR_APIKEY_GOES_HERE',
password: ''
};
} else if (auth.type === 'apikey') {
opts.headers = {
'APIKey': auth.apikey || 'YOUR_APIKEY_GOES_HERE'
};
}
}
var options = _.omit(opts, 'pathParams', 'queryParams', 'templateurl');
var url = opts.url;
var idx = opts.url.indexOf('/:');
if (idx > 0) {
url = opts.url.substring(0, idx);
}
var q = [];
endpoint.parameters && Object.keys(endpoint.parameters).forEach(function (k) {
var param = endpoint.parameters[k];
if (param.type === 'query') {
q.push(param.name + '=' + param.default || '');
} else if (param.type === 'path') {
url += '/' + param.name.toUpperCase();
} else {
options.json = options.json || {};
options.json[param.name] = param.default || '';
}
});
if (q.length) {
url += '?' + q.join('&');
}
options.url = url;
options.gzip = true;
options.json = true;
code.push('var options = ' + JSON.stringify(options, null, 2) + ';');
code.push('request(options, function (err, response, body) {');
code.push('\tconsole.log("success:", body.success, ", id:", body.id);');
code.push('});');
code.push('```');
return code.join('\n');
}
exports.generate = generate;