Initial import from local backup (Documents-Playground/pakerpale)
This commit is contained in:
92
node_modules/pinterest-node-api/lib/utils/index.js
generated
vendored
Normal file
92
node_modules/pinterest-node-api/lib/utils/index.js
generated
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
'use strict';
|
||||
|
||||
var hasOwn = {}.hasOwnProperty;
|
||||
var _ = require('lodash');
|
||||
|
||||
var utils = module.exports = {
|
||||
|
||||
isAuthKey: function (key) {
|
||||
return typeof key === 'string' && /^(?:[a-z]{2}_)?[A-z0-9]{32}$/.test(key);
|
||||
},
|
||||
|
||||
isOptionsHash: function (o) {
|
||||
o = JSON.parse(JSON.stringify(o));
|
||||
return _.isPlainObject(o) && ['api_key'].some(function (key) {
|
||||
return o.hasOwnProperty(key);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Outputs a new function with interpolated object property values.
|
||||
* Use like so:
|
||||
* var fn = makeURLInterpolator('some/url/{param1}/{param2}');
|
||||
* fn({ param1: 123, param2: 456 }); // => 'some/url/123/456'
|
||||
*/
|
||||
makeURLInterpolator: (function () {
|
||||
var rc = {
|
||||
'\n': '\\n', '\"': '\\\"',
|
||||
'\u2028': '\\u2028', '\u2029': '\\u2029'
|
||||
};
|
||||
return function makeURLInterpolator(str) {
|
||||
var cleanString = str.replace(/["\n\r\u2028\u2029]/g, function ($0) {
|
||||
return rc[$0];
|
||||
});
|
||||
return function (outputs) {
|
||||
return cleanString.replace(/\{([\s\S]+?)\}/g, function ($0, $1) {
|
||||
return encodeURIComponent(outputs[$1] || '');
|
||||
});
|
||||
};
|
||||
};
|
||||
}()),
|
||||
|
||||
/**
|
||||
* Return the data argument from a list of arguments
|
||||
*/
|
||||
getDataFromArgs: function (args) {
|
||||
if (args.length > 0) {
|
||||
if (_.isPlainObject(args[0]) && !utils.isOptionsHash(args[0])) {
|
||||
return args.shift();
|
||||
}
|
||||
}
|
||||
return {};
|
||||
},
|
||||
|
||||
/**
|
||||
* Return the options hash from a list of arguments
|
||||
*/
|
||||
getOptionsFromArgs: function (args) {
|
||||
var opts = {
|
||||
auth: null,
|
||||
headers: {}
|
||||
};
|
||||
if (args.length > 0) {
|
||||
var arg = args[args.length - 1];
|
||||
if (utils.isAuthKey(arg)) {
|
||||
opts.auth = args.pop();
|
||||
}
|
||||
}
|
||||
return opts;
|
||||
},
|
||||
|
||||
/**
|
||||
* Provide simple "Class" extension mechanism
|
||||
*/
|
||||
protoExtend: function (sub) {
|
||||
var Super = this;
|
||||
var Constructor = hasOwn.call(sub, 'constructor') ? sub.constructor : function () {
|
||||
Super.apply(this, arguments);
|
||||
};
|
||||
Constructor.prototype = Object.create(Super.prototype);
|
||||
for (var i in sub) {
|
||||
if (hasOwn.call(sub, i)) {
|
||||
Constructor.prototype[i] = sub[i];
|
||||
}
|
||||
}
|
||||
for (i in Super) {
|
||||
if (hasOwn.call(Super, i)) {
|
||||
Constructor[i] = Super[i];
|
||||
}
|
||||
}
|
||||
return Constructor;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user