'use strict' function buildXpackWatcherStats (opts) { // eslint-disable-next-line no-unused-vars const { makeRequest, ConfigurationError, result } = opts /** * Perform a [xpack.watcher.stats](http://www.elastic.co/guide/en/elasticsearch/reference/current/watcher-api-stats.html) request * * @param {enum} metric - Controls what additional stat metrics should be include in the response * @param {enum} metric - Controls what additional stat metrics should be include in the response * @param {boolean} emit_stacktraces - Emits stack traces of currently running watches */ return function xpackWatcherStats (params, callback) { if (typeof params === 'function' || params == null) { callback = params params = {} } // promises support if (callback == null) { return new Promise((resolve, reject) => { xpackWatcherStats(params, (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 = [ 'metric', 'emit_stacktraces' ] const acceptedQuerystringCamelCased = [ 'metric', 'emitStacktraces' ] 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 = params.ignore || null if (typeof ignore === 'number') { ignore = [ignore] } // build request object const parts = ['_xpack', 'watcher', 'stats', params['metric']] const request = { method, path: '/' + parts.filter(Boolean).map(encodeURIComponent).join('/'), querystring, body: null, headers: params.headers || null, ignore, requestTimeout: params.requestTimeout || null } return makeRequest(request, callback) } } module.exports = buildXpackWatcherStats