11-- https://github.com/ledgetech/lua-resty-http
2+ local require = require
23local split = require (" ngx.re" ).split
34local typeof = require (" typeof" )
45local cjson = require (" cjson.safe" )
@@ -27,6 +28,7 @@ local decode_base64 = ngx.decode_base64
2728local semaphore = require (" ngx.semaphore" )
2829local health_check = require (" resty.etcd.health_check" )
2930local pl_path = require (" pl.path" )
31+ local pcall = pcall
3032
3133math.randomseed (now () * 1000 + ngx .worker .pid ())
3234
@@ -265,6 +267,17 @@ local function serialize_and_encode_base64(serialize_fn, data)
265267 return encode_base64 (data )
266268end
267269
270+ local function require_serializer (serializer_name )
271+ if serializer_name then
272+ local ok , module = pcall (require , " resty.etcd.serializers." .. serializer_name )
273+ if ok then
274+ return module
275+ end
276+ end
277+
278+ return require (" resty.etcd.serializers.json" )
279+ end
280+
268281
269282function _M .new (opts )
270283 local timeout = opts .timeout
@@ -278,7 +291,7 @@ function _M.new(opts)
278291 if ssl_verify == nil then
279292 ssl_verify = true
280293 end
281- local serializer = opts .serializer
294+ local serializer = require_serializer ( opts .serializer )
282295 local extra_headers = opts .extra_headers
283296 local sni = opts .sni
284297 local unix_socket_proxy = opts .unix_socket_proxy
0 commit comments