UNPKG

arrow-docgen

Version:
58 lines (53 loc) 1.65 kB
// 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;