From 29a3bcfdc2a1ff31670106265d13413ca9135eb9 Mon Sep 17 00:00:00 2001 From: delvedor Date: Mon, 8 Apr 2019 17:35:52 +0200 Subject: [PATCH 1/4] Added User-Agent header --- lib/Transport.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/Transport.js b/lib/Transport.js index 7bbc90412..e3a3e8925 100644 --- a/lib/Transport.js +++ b/lib/Transport.js @@ -24,6 +24,7 @@ const once = require('once') const { createGzip } = require('zlib') const intoStream = require('into-stream') const ms = require('ms') +const clientVersion = require('../package.json').version const { ConnectionError, TimeoutError, @@ -46,7 +47,7 @@ class Transport { this.requestTimeout = toMs(opts.requestTimeout) this.suggestCompression = opts.suggestCompression === true this.compression = opts.compression || false - this.headers = opts.headers || {} + this.headers = Object.assign({}, { 'User-Agent': `elasticsearch-javascript/${clientVersion}` }, opts.headers) this.sniffInterval = opts.sniffInterval this.sniffOnConnectionFault = opts.sniffOnConnectionFault this.sniffEndpoint = opts.sniffEndpoint From 7bdcf2b179fffed79aa6b1ddf059d5d5f4f6c7c6 Mon Sep 17 00:00:00 2001 From: delvedor Date: Mon, 8 Apr 2019 17:35:57 +0200 Subject: [PATCH 2/4] Updated test --- test/unit/transport.test.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/test/unit/transport.test.js b/test/unit/transport.test.js index c7c789950..753daa30f 100644 --- a/test/unit/transport.test.js +++ b/test/unit/transport.test.js @@ -2107,3 +2107,37 @@ test('Should accept custom querystring in the optons object', t => { t.end() }) + +test('Should add an User-Agent header', t => { + t.plan(2) + function handler (req, res) { + t.match(req.headers, { + 'user-agent': `elasticsearch-javascript/${require('../../package.json').version}` + }) + res.setHeader('Content-Type', 'application/json;utf=8') + res.end(JSON.stringify({ hello: 'world' })) + } + + buildServer(handler, ({ port }, server) => { + const pool = new ConnectionPool({ Connection }) + pool.addConnection(`http://localhost:${port}`) + + const transport = new Transport({ + emit: () => {}, + connectionPool: pool, + serializer: new Serializer(), + maxRetries: 3, + requestTimeout: 30000, + sniffInterval: false, + sniffOnStart: false + }) + + transport.request({ + method: 'GET', + path: '/hello' + }, (err, { body }) => { + t.error(err) + server.stop() + }) + }) +}) From 597a7b2b51e67c2fb797c2aa1ca63fa742d28545 Mon Sep 17 00:00:00 2001 From: delvedor Date: Tue, 30 Apr 2019 09:15:17 +0200 Subject: [PATCH 3/4] Updated user-agent format --- lib/Transport.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/Transport.js b/lib/Transport.js index e3a3e8925..96b850700 100644 --- a/lib/Transport.js +++ b/lib/Transport.js @@ -20,11 +20,11 @@ 'use strict' const debug = require('debug')('elasticsearch') +const os = require('os') const once = require('once') const { createGzip } = require('zlib') const intoStream = require('into-stream') const ms = require('ms') -const clientVersion = require('../package.json').version const { ConnectionError, TimeoutError, @@ -35,6 +35,9 @@ const { const noop = () => {} +const clientVersion = require('../package.json').version +const userAgent = `elasticsearch-js/${clientVersion} (${os.platform()} ${os.release()}-${os.arch()}; Node.js ${process.version})` + class Transport { constructor (opts = {}) { if (typeof opts.compression === 'string' && opts.compression !== 'gzip') { @@ -47,7 +50,7 @@ class Transport { this.requestTimeout = toMs(opts.requestTimeout) this.suggestCompression = opts.suggestCompression === true this.compression = opts.compression || false - this.headers = Object.assign({}, { 'User-Agent': `elasticsearch-javascript/${clientVersion}` }, opts.headers) + this.headers = Object.assign({}, { 'User-Agent': userAgent }, opts.headers) this.sniffInterval = opts.sniffInterval this.sniffOnConnectionFault = opts.sniffOnConnectionFault this.sniffEndpoint = opts.sniffEndpoint From c74b8c204d4f9734f70c48277e2d72b5901ec2ee Mon Sep 17 00:00:00 2001 From: delvedor Date: Tue, 30 Apr 2019 09:15:22 +0200 Subject: [PATCH 4/4] Updated test --- test/unit/transport.test.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/unit/transport.test.js b/test/unit/transport.test.js index 753daa30f..439c8b46f 100644 --- a/test/unit/transport.test.js +++ b/test/unit/transport.test.js @@ -22,6 +22,7 @@ const { test } = require('tap') const { URL } = require('url') const { createGunzip } = require('zlib') +const os = require('os') const intoStream = require('into-stream') const { buildServer, @@ -2110,9 +2111,12 @@ test('Should accept custom querystring in the optons object', t => { test('Should add an User-Agent header', t => { t.plan(2) + const clientVersion = require('../../package.json').version + const userAgent = `elasticsearch-js/${clientVersion} (${os.platform()} ${os.release()}-${os.arch()}; Node.js ${process.version})` + function handler (req, res) { t.match(req.headers, { - 'user-agent': `elasticsearch-javascript/${require('../../package.json').version}` + 'user-agent': userAgent }) res.setHeader('Content-Type', 'application/json;utf=8') res.end(JSON.stringify({ hello: 'world' }))