UNPKG

yog-ral

Version:

node-ral with mcpack and nshead

62 lines (52 loc) 1.51 kB
/* * fis * http://fis.baidu.com/ * 2014/8/14 */ 'use strict'; 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;