From 5ada61cbe18e4a5702216d4f7dc40ac7b05b9b6f Mon Sep 17 00:00:00 2001 From: Kagami Hiiragi Date: Tue, 10 Feb 2015 17:39:01 +0300 Subject: [PATCH] Accept Buffer on UserAgent.encode --- lib/user-agent.js | 12 +++++++----- tests/unit.js | 9 +++++++++ 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/lib/user-agent.js b/lib/user-agent.js index 594c120..2cb1ae0 100644 --- a/lib/user-agent.js +++ b/lib/user-agent.js @@ -62,8 +62,8 @@ exports.parse = function(str) { /** * Encode user agent into `var_str` Buffer. Most underlying software * comes first. - * @param {(Object[]|string[]|string)} software - List of software to - * encode or just raw user agent string + * @param {(Object[]|string[]|string|Buffer)} software - List of + * software to encode or just raw user agent string/Buffer * @return {Buffer} Encoded user agent. * @function * @static @@ -83,6 +83,8 @@ var encode = exports.encode = function(software) { return str; }).join("/"); ua = "/" + ua + "/"; + } else if (Buffer.isBuffer(software)) { + return software; } else { ua = software; } @@ -90,7 +92,7 @@ var encode = exports.encode = function(software) { }; /** - * Encode bitmessage's user agent. + * Encode bitmessage's library user agent. * @return {Buffer} Encoded user agent. */ exports.encodeSelf = function() { @@ -98,8 +100,8 @@ exports.encodeSelf = function() { }; /** - * Encode user agent with bitmessage's user agent underneath. Most - * underlying software comes first. + * Encode user agent with bitmessage's library user agent underneath. + * Most underlying software comes first. * @param {(Object[]|string[]|Object|string)} software - List of * software to encode * @return {Buffer} Encoded user agent. diff --git a/tests/unit.js b/tests/unit.js index 695d062..7288276 100644 --- a/tests/unit.js +++ b/tests/unit.js @@ -1327,5 +1327,14 @@ describe("High-level classes", function() { expect(UserAgent.parse("/test").length).to.equal(0); expect(UserAgent.parse("test/").length).to.equal(0); }); + + it("should accept raw Buffer on encode", function() { + var enc = UserAgent.encodeSelfWith("test:0.0.1"); + enc = UserAgent.encode(enc); + var software = UserAgent.parse(UserAgent.decode(enc).str); + expect(software[0].name).to.equal("bitmessage"); + expect(software[1]).to.deep.equal({name: "test", version: "0.0.1"}); + }); + }); });