'use strict' function buildIndicesGetTemplate (opts) { // eslint-disable-next-line no-unused-vars const { makeRequest, ConfigurationError, result } = opts /** * Perform a [indices.get_template](http://www.elastic.co/guide/en/elasticsearch/reference/master/indices-templates.html) request * * @param {list} name - The comma separated names of the index templates * @param {boolean} flat_settings - Return settings in flat format (default: false) * @param {time} master_timeout - Explicit operation timeout for connection to master node * @param {boolean} local - Return local information, do not retrieve the state from master node (default: false) */ return function indicesGetTemplate (params, options, callback) { options = options || {} if (typeof options === 'function') { callback = options options = {} } if (typeof params === 'function' || params == null) { callback = params params = {} options = {} } // promises support if (callback == null) { return new Promise((resolve, reject) => { indicesGetTemplate(params, options, (err, body) => { err ? reject(err) : resolve(body) }) }) } // check required parameters if (params.body != null) { return callback( new ConfigurationError('This API does not require a body'), result ) } // build querystring object const querystring = {} const keys = Object.keys(params) const acceptedQuerystring = [ 'flat_settings', 'master_timeout', 'local', 'pretty', 'human', 'error_trace', 'source', 'filter_path' ] const acceptedQuerystringCamelCased = [ 'flatSettings', 'masterTimeout', 'local', 'pretty', 'human', 'errorTrace', 'source', 'filterPath' ] for (var i = 0, len = keys.length; i < len; i++) { var key = keys[i] if (acceptedQuerystring.indexOf(key) !== -1) { querystring[key] = params[key] } else { var camelIndex = acceptedQuerystringCamelCased.indexOf(key) if (camelIndex !== -1) { querystring[acceptedQuerystring[camelIndex]] = params[key] } } } // configure http method var method = params.method if (method == null) { method = 'GET' } // validate headers object if (params.headers != null && typeof params.headers !== 'object') { return callback( new ConfigurationError(`Headers should be an object, instead got: ${typeof params.headers}`), result ) } var ignore = options.ignore || null if (typeof ignore === 'number') { ignore = [ignore] } // build request object const parts = ['_template', params['name']] const request = { method, path: '/' + parts.filter(Boolean).map(encodeURIComponent).join('/'), querystring, body: null, headers: params.headers || null } const requestOptions = { ignore, requestTimeout: options.requestTimeout || null, maxRetries: options.maxRetries || null, asStream: options.asStream || false } return makeRequest(request, requestOptions, callback) } } module.exports = buildIndicesGetTemplate