yog-ral
Version:
node-ral with mcpack and nshead
62 lines (52 loc) • 1.51 kB
JavaScript
/*
* fis
* http://fis.baidu.com/
* 2014/8/14
*/
;
var Converter = require('node-ral').Converter;
var logger = require('node-ral').Logger('McgiConverter');
var util = require('util');
var mcpack;
var iconv = require('iconv-lite');
try {
mcpack = require('@baidu/mcpack');
}
catch (e) {
logger.warning('mcpack module load failed');
}
function McgiConverter() {
Converter.call(this);
}
util.inherits(McgiConverter, Converter);
McgiConverter.prototype.unpack = function (config, data) {
try {
if (!mcpack) {
throw new Error('mcpack is not ready');
}
if (!data) {
throw new Error('invalid data data=' + data);
}
var obj = mcpack.decode(data, {
encoding: config.encoding
});
if (!obj['Content-Length']) {
throw new Error('mcgi protocol is not supported, missing Content-Length');
}
var extraData = data.slice(data.length - parseInt(obj['Content-Length'], 10));
logger.trace('unpack mcgi header data succ ServiceID=' + config.serviceID);
extraData.meta = obj;
return extraData;
}
catch (ex) {
logger.notice('unpack mcgi header data failed ServiceID=' + config.serviceID);
throw ex;
}
};
McgiConverter.prototype.pack = function (config, data) {
throw new Error('mcgi pack is not implemented');
};
McgiConverter.prototype.getName = function () {
return 'mcgi';
};
module.exports = McgiConverter;