From 03fd1071f3c1bfe5375917eadf206330c523de7e Mon Sep 17 00:00:00 2001 From: Matthew Bargar Date: Thu, 28 Jan 2016 11:13:46 -0500 Subject: [PATCH] callWithRequest should pass the context that the API method would get when called normally instead of assuming client is the context for everything --- src/plugins/elasticsearch/lib/call_with_request.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/plugins/elasticsearch/lib/call_with_request.js b/src/plugins/elasticsearch/lib/call_with_request.js index 1bd818296c73..cf440b260219 100644 --- a/src/plugins/elasticsearch/lib/call_with_request.js +++ b/src/plugins/elasticsearch/lib/call_with_request.js @@ -2,15 +2,21 @@ const _ = require('lodash'); const Promise = require('bluebird'); const Boom = require('boom'); const getBasicAuthRealm = require('./get_basic_auth_realm'); +const toPath = require('lodash/internal/toPath'); module.exports = (client) => { return (req, endpoint, params = {}) => { if (req.headers.authorization) { _.set(params, 'headers.authorization', req.headers.authorization); } - const api = _.get(client, endpoint); + const path = toPath(endpoint); + const api = _.get(client, path); + let apiContext = _.get(client, path.slice(0, -1)); + if (_.isEmpty(apiContext)) { + apiContext = client; + } if (!api) throw new Error(`callWithRequest called with an invalid endpoint: ${endpoint}`); - return api.call(client, params) + return api.call(apiContext, params) .catch((err) => { if (err.status === 401) { // TODO: The err.message is temporary until we have support for getting headers in the client.