From 24beb382ca61eb392a48e0058eac81c73b16684f Mon Sep 17 00:00:00 2001 From: Spencer Alger Date: Tue, 28 Oct 2014 15:48:30 -0700 Subject: [PATCH] allow overriding the angular serializer with `serializer: "json"` --- src/elasticsearch.angular.js | 19 +------------------ src/lib/serializers/angular.js | 19 +++++++++++++++++++ src/lib/transport.js | 3 ++- 3 files changed, 22 insertions(+), 19 deletions(-) create mode 100644 src/lib/serializers/angular.js diff --git a/src/elasticsearch.angular.js b/src/elasticsearch.angular.js index 976cbbb5c..514374714 100644 --- a/src/elasticsearch.angular.js +++ b/src/elasticsearch.angular.js @@ -6,8 +6,6 @@ */ var AngularConnector = require('./lib/connectors/angular'); var Client = require('./lib/client'); -var _ = require('./lib/utils'); -var JsonSerializer = require('./lib/serializers/json'); process.angular_build = true; @@ -22,25 +20,10 @@ angular.module('elasticsearch', []) config.defer = function () { return $q.defer(); }; - config.serializer = AngularSerializer; + config.serializer = config.serializer || 'angular'; return new Client(config); }; - _.inherits(AngularSerializer, JsonSerializer); - function AngularSerializer() {} - // mimic the JsonSerializer's encode method, but use angular's toJson instead - AngularSerializer.prototype.encode = function (val) { - switch (typeof val) { - case 'string': - return val; - case 'object': - if (val) return angular.toJson(val); - /* falls through */ - default: - return; - } - }; - factory.errors = require('./lib/errors'); factory.ConnectionPool = require('./lib/connection_pool'); factory.Transport = require('./lib/transport'); diff --git a/src/lib/serializers/angular.js b/src/lib/serializers/angular.js new file mode 100644 index 000000000..f9a3654cb --- /dev/null +++ b/src/lib/serializers/angular.js @@ -0,0 +1,19 @@ +/* global angular */ +var _ = require('./lib/utils'); +var JsonSerializer = require('./lib/serializers/json'); + +function AngularSerializer() {} +_.inherits(AngularSerializer, JsonSerializer); + +// mimic the JsonSerializer's encode method, but use angular's toJson instead +AngularSerializer.prototype.encode = function (val) { + switch (typeof val) { + case 'string': + return val; + case 'object': + if (val) return angular.toJson(val); + /* falls through */ + default: + return; + } +}; \ No newline at end of file diff --git a/src/lib/transport.js b/src/lib/transport.js index dc5cb9116..0cf0aa504 100644 --- a/src/lib/transport.js +++ b/src/lib/transport.js @@ -92,7 +92,8 @@ Transport.connectionPools = { }; Transport.serializers = { - json: require('./serializers/json') + json: require('./serializers/json'), + angular: require('./serializers/angular') }; Transport.nodesToHostCallbacks = {