@iotize/tap
Version:
IoTize Device client for Javascript
49 lines • 3.73 kB
JavaScript
export class PathParameter {
static fillParam(path, key, value) {
var map = {};
map[key] = value;
return PathParameter.fillParams(path, map);
}
/**
* Same as fillParams but will throw an error if some parameters has not been replaced
*/
static fillAllParams(path, pathParameters) {
path = PathParameter.fillParams(path, pathParameters);
const remainingArgs = PathParameter.extractParams(path);
if (remainingArgs.length > 0) {
throw new Error(`Missing path parameter ${remainingArgs.join(', ')} (path: ${path})`);
}
return path;
}
static fillParams(path, mapping) {
for (var key in mapping) {
var match = '{' + key + '}';
if (path.indexOf(match) >= 0) {
path = path.replace(match, mapping[key].toString());
}
else {
throw new Error('Parameter ' + key + ' does not exist in path: ' + path);
}
}
return path;
}
/**
*
* @param path
* @returns names of path parameters
*/
static extractParams(path) {
var found = [], rxp = PathParameter.PARAMETER_REGEX, curMatch;
while ((curMatch = rxp.exec(path))) {
found.push(curMatch[1]);
}
return found;
}
static hasParams(path) {
return PathParameter.extractParams(path).length > 0;
}
}
(function (PathParameter) {
PathParameter.PARAMETER_REGEX = /{([^}]+)}/g;
})(PathParameter || (PathParameter = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC1wYXJhbWV0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL3BhdGgtcGFyYW1ldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxhQUFhO0lBQ2pCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBWSxFQUFFLEdBQVcsRUFBRSxLQUFhO1FBQzlELElBQUksR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNsQixHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLE9BQU8sYUFBYSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FDekIsSUFBWSxFQUNaLGNBQWtEO1FBRWxELElBQUksR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN0RCxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FDYiwwQkFBMEIsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLEdBQUcsQ0FDckUsQ0FBQztTQUNIO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FDdEIsSUFBWSxFQUNaLE9BQTJDO1FBRTNDLEtBQUssSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3ZCLElBQUksS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQzVCLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzthQUNyRDtpQkFBTTtnQkFDTCxNQUFNLElBQUksS0FBSyxDQUNiLFlBQVksR0FBRyxHQUFHLEdBQUcsMkJBQTJCLEdBQUcsSUFBSSxDQUN4RCxDQUFDO2FBQ0g7U0FDRjtRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQVk7UUFDdEMsSUFBSSxLQUFLLEdBQUcsRUFBRSxFQUNaLEdBQUcsR0FBRyxhQUFhLENBQUMsZUFBZSxFQUNuQyxRQUFRLENBQUM7UUFFWCxPQUFPLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNsQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3pCO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFZO1FBQ2xDLE9BQU8sYUFBYSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3RELENBQUM7Q0FDRjtBQUVELFdBQWlCLGFBQWE7SUFDZiw2QkFBZSxHQUFHLFlBQVksQ0FBQztBQUM5QyxDQUFDLEVBRmdCLGFBQWEsS0FBYixhQUFhLFFBRTdCIn0=