104 lines
2.5 KiB
JavaScript
104 lines
2.5 KiB
JavaScript
var _ = require('../util').lodash,
|
|
Property = require('./property').Property,
|
|
PropertyBase = require('./property-base').PropertyBase,
|
|
|
|
FormParam;
|
|
|
|
/**
|
|
* @typedef FormParam.definition
|
|
* @property {String} key The name ("key") of the form data parameter.
|
|
* @property {String} value The value of the parameter.
|
|
*/
|
|
_.inherit((
|
|
|
|
/**
|
|
* Represents a Form Data parameter, which can exist in request body.
|
|
*
|
|
* @constructor
|
|
* @param {FormParam.definition} options Pass the initial definition of the form data parameter.
|
|
*/
|
|
FormParam = function PostmanFormParam (options = {}) {
|
|
FormParam.super_.apply(this, arguments);
|
|
|
|
this.key = options.key || '';
|
|
this.value = options.value || '';
|
|
this.type = options.type;
|
|
this.src = options.src;
|
|
this.contentType = options.contentType;
|
|
}), Property);
|
|
|
|
_.assign(FormParam.prototype, /** @lends FormParam.prototype */ {
|
|
/**
|
|
* Converts the FormParameter to a single param string.
|
|
*
|
|
* @returns {String}
|
|
*/
|
|
toString () {
|
|
return this.key + '=' + this.value;
|
|
},
|
|
|
|
/**
|
|
* Returns the value of the form parameter (if any).
|
|
*
|
|
* @returns {*|String}
|
|
*/
|
|
valueOf () {
|
|
return this.value; // can be multiple types, so just return whatever we have instead of being too clever
|
|
},
|
|
|
|
/**
|
|
* Convert the form-param to JSON compatible plain object.
|
|
*
|
|
* @returns {Object}
|
|
*/
|
|
toJSON () {
|
|
var obj = PropertyBase.toJSON(this);
|
|
|
|
// remove value from file param because it is non-serializable ReadStream
|
|
if (obj.type === 'file') {
|
|
_.unset(obj, 'value');
|
|
}
|
|
|
|
return obj;
|
|
}
|
|
});
|
|
|
|
_.assign(FormParam, /** @lends FormParam */ {
|
|
|
|
/**
|
|
* Defines the name of this property for internal use.
|
|
*
|
|
* @private
|
|
* @readOnly
|
|
* @type {String}
|
|
*/
|
|
_postman_propertyName: 'FormParam',
|
|
|
|
/**
|
|
* Declare the list index key, so that property lists of form parameters work correctly
|
|
*
|
|
* @type {String}
|
|
*/
|
|
_postman_propertyIndexKey: 'key',
|
|
|
|
/**
|
|
* Form params can have multiple values, so set this to true.
|
|
*
|
|
* @type {Boolean}
|
|
*/
|
|
_postman_propertyAllowsMultipleValues: true,
|
|
|
|
/**
|
|
* Parse a form data string into an array of objects, where each object contains a key and a value.
|
|
*
|
|
* @todo implement this, not implemented yet.
|
|
* @param formdata {String}
|
|
* @returns {Array}
|
|
*/
|
|
parse: _.noop
|
|
});
|
|
|
|
module.exports = {
|
|
FormParam
|
|
};
|