diff --git a/lib/client.js b/lib/client.js index 43ca0ff..2f313b2 100644 --- a/lib/client.js +++ b/lib/client.js @@ -195,8 +195,9 @@ ZKClient.prototype.connect = function connect(cb) { ZKClient.prototype.close = function close(cb) { assert.optionalFunc(cb, 'callback'); - cb = once(cb); - + if (cb) { + cb = once(cb); + } var log = this.log; var zk = this.zk; @@ -225,7 +226,7 @@ ZKClient.prototype.close = function close(cb) { ZKClient.prototype.create = function creat(p, obj, opts, cb) { assert.string(p, 'path'); - assert.object(obj, 'object'); + if (typeof (opts) === 'function') { cb = opts; opts = {}; @@ -240,7 +241,13 @@ ZKClient.prototype.create = function creat(p, obj, opts, cb) { if (!this._connected(cb)) return; - var data = new Buffer(JSON.stringify(obj), 'utf8'); + var data; + if (typeof(obj) === "string") { + data = new Buffer(obj, 'utf-8'); + } else { + assert.object(obj, 'object'); + data = new Buffer(JSON.stringify(obj), 'utf8'); + } var f; var flags = opts.flags || []; var log = this.log.child({ @@ -309,14 +316,16 @@ ZKClient.prototype.get = function get(p, cb) { try { obj = JSON.parse(data.toString('utf8')); } catch (e) { - log.trace({ - err: e, - data: data - }, 'get: failed (parsing data)'); - cb(e); - return; + try { + obj = data.toString('utf8'); + } catch (e) { + log.trace({ + err: e, + data: data + }, 'get: failed (parsing data)'); + return; + } } - log.trace({data: obj}, 'get: done'); cb(null, obj); } @@ -373,7 +382,7 @@ ZKClient.prototype.mkdirp = function mkdirp(p, cb) { ZKClient.prototype.put = function put(p, obj, opts, cb) { assert.string(p, 'path'); - assert.object(obj, 'object'); +// assert.object(obj, 'object'); if (typeof (opts) === 'function') { cb = opts; opts = {}; @@ -387,7 +396,13 @@ ZKClient.prototype.put = function put(p, obj, opts, cb) { if (!this._connected(cb)) return; - var data = new Buffer(JSON.stringify(obj), 'utf8'); + var data; + if (typeof(obj) === "string" || typeof(obj) == "number" || typeof(obj) == "boolean") { + data = new Buffer(obj.toString(), 'utf-8'); + } else { + assert.object(obj, 'object'); + data = new Buffer(JSON.stringify(obj), 'utf8'); + } var log = this.log.child({path: p}, true); var ver = opts.version !== undefined ? opts.version : -1; var zk = this.zk;