UNPKG

dl

Version:

DreamLab Libs

82 lines (67 loc) 2.9 kB
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;