dl
Version:
DreamLab Libs
82 lines (67 loc) • 2.9 kB
JavaScript
var Core = require("core"),
Class = Core.Class,
crypto = Core.crypto;
var OcdnTransformation = function () {};
OcdnTransformation = new Class(new OcdnTransformation());
OcdnTransformation.crypt = function (key, name, transStr) {
transStr = transStr || OcdnTransformation.Transformation.ORIGINAL;
var checksum = crypto.md5(name + transStr + key);
var buff = new Buffer(checksum.substr(0,2) + ';' + transStr );
var base = buff.toString('base64');
return base.replace(/=/g, '_');
};
OcdnTransformation.decrypt = function (key, name, transStr) {
var transformations = new Buffer(transStr.replace(/_/g, '='), 'base64').toString();
var checksum = transformations.substr(0,2);
transformations = transformations.substr(3);
return transformations;
};
OcdnTransformation.encodeTransformations = function (transformations) {
var trans = null;
if (transformations.length === 0) {
trans = OcdnTransformation.Transformation.ORIGINAL;
} else {
trans = "";
for (var i = 0, iMax = transformations.length; i < iMax; i++) {
trans += transformations[i].transformation;
for (var j = 0, jMax = transformations[i].params.length; j < jMax; j++) {
trans += ',' + transformations[i].params[j].toString(16);
}
trans += ";";
}
trans = trans.slice(0, -1); //remove last comma
}
return trans;
};
OcdnTransformation.decodeTransformations = function (transformations) {
var retVal = [];
transformations = transformations.split(';');
for (var i = 0, iMax = transformations.length; i < iMax; i++) {
var trans = transformations[i].split(',');
retVal.push({
transformation: trans.shift(),
params: trans
});
}
if (retVal.length == 1 &&
retVal[0].transformation == OcdnTransformation.Transformation.ORIGINAL){
retVal = [];
}
return retVal;
};
OcdnTransformation.Transformation = {};
OcdnTransformation.Transformation.ORIGINAL = '00';
OcdnTransformation.Transformation.ROTATE = '01';
OcdnTransformation.Transformation.BLUR = '02';
OcdnTransformation.Transformation.RESIZE = '03';
OcdnTransformation.Transformation.CROP = '04';
OcdnTransformation.Transformation.GRAYSCALE = '05';
OcdnTransformation.Transformation.BOUNDING_BOX = '06';
OcdnTransformation.Transformation.SAVEAS = '07';
OcdnTransformation.Transformation.QUALITY_PRESET = '08';
OcdnTransformation.Transformation.IMAGEFORMAT = '09';
OcdnTransformation.Transformation.SETBACKGROUND = '0a';
OcdnTransformation.Transformation.PRESERVEANIMATION = '0b'; // Obsolete
OcdnTransformation.Transformation.COMBINE = '0c';
OcdnTransformation.Transformation.DISABLEANIMATION = '0d';
exports.OcdnTransformation = OcdnTransformation;