130 lines
4.4 KiB
JavaScript
130 lines
4.4 KiB
JavaScript
/* eslint-disable object-shorthand */
|
|
var _ = require('lodash').noConflict(),
|
|
util = require('../../util'),
|
|
inherits = require('inherits'),
|
|
|
|
v2Common = require('../../common/v2'),
|
|
BaseBuilders = require('../v2.0.0/converter-v2-to-v1').Builders,
|
|
|
|
Builders;
|
|
|
|
inherits(Builders = function () {
|
|
Builders.super_.apply(this, arguments);
|
|
}, BaseBuilders);
|
|
|
|
_.assign(Builders.prototype, {
|
|
/**
|
|
* Converts arrays of v2.1 style auth params to their v1.0.0 equivalent objects.
|
|
*
|
|
* @param {Object} entity - A v2.1 compliant wrapped auth manifest.
|
|
* @param {?Object} options - The set of options for the current auth cleansing operation.
|
|
* @param {?Boolean} [options.includeNoauth=false] - When set to true, noauth is set to null.
|
|
* @returns {Object} - A v1 compliant set of auth helper attributes.
|
|
*/
|
|
auth: function (entity, options) {
|
|
return util.sanitizeAuthArray(entity, options);
|
|
}
|
|
});
|
|
|
|
module.exports = {
|
|
input: '2.1.0',
|
|
output: '1.0.0',
|
|
Builders: Builders,
|
|
|
|
/**
|
|
* Converts a single V2 item to a V1 request.
|
|
*
|
|
* @param {Object} request - The request to be converted.
|
|
* @param {Object} options - The set of options for request conversion.
|
|
* @param {Function} callback - The function to be invoked after conversion has completed.
|
|
*/
|
|
convertSingle: function (request, options, callback) {
|
|
var err,
|
|
converted,
|
|
clone = _.cloneDeep(request),
|
|
builders = new Builders(options);
|
|
|
|
try {
|
|
clone = v2Common.populateIds(clone);
|
|
converted = builders.request(clone);
|
|
}
|
|
catch (e) { err = e; }
|
|
|
|
if (callback) { return callback(err, converted); }
|
|
|
|
if (err) { throw err; }
|
|
|
|
return converted;
|
|
},
|
|
|
|
/**
|
|
* Converts a single V2 item to a V1 request.
|
|
*
|
|
* @param {Object} response - The response to be converted.
|
|
* @param {Object} options - The set of options for request conversion.
|
|
* @param {Function} callback - The function to be invoked after conversion has completed.
|
|
*/
|
|
convertResponse: function (response, options, callback) {
|
|
var builders = new Builders(options),
|
|
converted,
|
|
err;
|
|
|
|
try { converted = builders.response(_.cloneDeep(response)); }
|
|
catch (e) { err = e; }
|
|
|
|
if (callback) { return callback(err, converted); }
|
|
|
|
if (err) { throw err; }
|
|
|
|
return converted;
|
|
},
|
|
|
|
/**
|
|
* Converts a V2 collection to a V1 collection (performs ID replacement, etc as necessary).
|
|
*
|
|
* @param {Object} collection - The collection to be converted.
|
|
* @param {Object} options - The set of options for request conversion.
|
|
* @param {Function} callback - The function to be invoked after conversion has completed.
|
|
*/
|
|
convert: function (collection, options, callback) {
|
|
collection = _.cloneDeep(collection);
|
|
|
|
var auth,
|
|
events,
|
|
variables,
|
|
builders = new Builders(options),
|
|
authOptions = { excludeNoauth: true },
|
|
units = ['order', 'folders_order', 'folders', 'requests'],
|
|
varOpts = options && { fallback: options.env, retainIds: options.retainIds },
|
|
id = _.get(collection, 'info._postman_id') || _.get(collection, 'info.id'),
|
|
info = collection && collection.info,
|
|
newCollection = {
|
|
id: id && options && options.retainIds ? id : util.uid(),
|
|
name: info && info.name
|
|
};
|
|
|
|
// ensure that each item has an id
|
|
collection = v2Common.populateIds(collection);
|
|
try {
|
|
// eslint-disable-next-line max-len
|
|
newCollection.description = builders.description(info && info.description);
|
|
(auth = builders.auth(collection, authOptions)) && (newCollection.auth = auth);
|
|
(events = builders.events(collection)) && (newCollection.events = events);
|
|
(variables = builders.variables(collection, varOpts)) && (newCollection.variables = variables);
|
|
util.addProtocolProfileBehavior(collection, newCollection);
|
|
|
|
units.forEach(function (unit) {
|
|
newCollection[unit] = builders[unit](collection);
|
|
});
|
|
}
|
|
catch (e) {
|
|
if (callback) { return callback(e, null); }
|
|
throw e;
|
|
}
|
|
|
|
if (callback) { return callback(null, newCollection); }
|
|
|
|
return newCollection;
|
|
}
|
|
};
|