diff --git a/examples/node/package.json b/examples/node/package.json index 32e465f..c8313c1 100644 --- a/examples/node/package.json +++ b/examples/node/package.json @@ -2,7 +2,7 @@ "name": "txtai-node", "dependencies": { "sprintf-js": ">=1.1.2", - "txtai": ">=6.2.0" + "txtai": ">=6.3.0" }, "devDependencies": { "@babel/cli": ">=7.10.5", diff --git a/package.json b/package.json index fdd0022..6b00c4c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "txtai", - "version": "6.2.0", + "version": "6.3.0", "author": "NeuML", "description": "JavaScript client for txtai", "license": "Apache-2.0", diff --git a/src/api.js b/src/api.js index f961033..3b01d74 100644 --- a/src/api.js +++ b/src/api.js @@ -9,11 +9,15 @@ class API { /** * Creates an API instance. * - * @param url base url + * @param url api url + * @param token api token */ - constructor(url) { - // Base url - this.url = url; + constructor(url, token) { + // API url + this.url = url ? url : process.env.TXTAI_API_URL + + // API token + this.token = token ? token : process.env.TXTAI_API_TOKEN } /** @@ -31,7 +35,7 @@ class API { } // Execute remote call - let res = await fetch(url); + let res = await fetch(url, {headers: this.headers()}); // Validate response and return JSON return res.ok ? await res.json() : Promise.reject(`${res.status} ${res.statusText}`); @@ -48,14 +52,32 @@ class API { // Build URL let url = `${this.url}/${method}`; + // Default headers + let defaults = {"Content-Type": "application/json"}; + // Execute remote call let res = await fetch(url, {method: "post", body: JSON.stringify(params), - headers: {"content-type": "application/json"}}); + headers: this.headers(defaults)}); // Validate response and return JSON return res.ok ? await res.json() : Promise.reject(`${res.status} ${res.statusText}`); } + + /** + * Creates default HTTP headers. + * + * @param base base headers + * @return headers + */ + headers(base) { + let headers = base ? base : {}; + if (this.token) { + headers["Authorization"] = "Bearer " + this.token; + } + + return headers + } } export default API;