Commit 96b817b1 authored by Trishna Saeharaseelan's avatar Trishna Saeharaseelan
Browse files

Merge branch 'release-v1.0.0' into 'master'

Release v1.0.0

See merge request !21
1 merge request!21Release v1.0.0
Pipeline #267356 passed with stages
in 2 minutes and 8 seconds
...@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ...@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
## [Unreleased] ## [Unreleased]
## [v1.0.0] - 2025-03-11
### Fixed
- Wait for authentication to complete for fast polling rates
### Changed
- Add hyphen to regex for schema version to enable issue branches
## [v0.1.0] - 2023-03-24 ## [v0.1.0] - 2023-03-24
### Added ### Added
...@@ -26,5 +36,6 @@ Create a soar protocol instance ...@@ -26,5 +36,6 @@ Create a soar protocol instance
- implement retreive schema version by tag/branch/commitref - implement retreive schema version by tag/branch/commitref
- override methods to handle soar message structure - override methods to handle soar message structure
[unreleased]: https://git.noc.ac.uk/communications-backbone-system/backbone-adapter-javascript/compare/v1.0.0...dev
[v1.0.0]: https://git.noc.ac.uk/communications-backbone-system/backbone-adapter-javascript/compare/v0.1.0...v1.0.0
[v0.1.0]: https://git.noc.ac.uk/communications-backbone-system/backbone-adapter-javascript/compare/a8eef21a...v0.1.0 [v0.1.0]: https://git.noc.ac.uk/communications-backbone-system/backbone-adapter-javascript/compare/a8eef21a...v0.1.0
[unreleased]: https://git.noc.ac.uk/communications-backbone-system/backbone-adapter-javascript/compare/v0.1.0...dev
...@@ -8,6 +8,7 @@ class Adapter { ...@@ -8,6 +8,7 @@ class Adapter {
this.protocol = protocol; this.protocol = protocol;
this.config = config; this.config = config;
this.axios = axios; this.axios = axios;
this.authenticating = false;
} }
/** /**
...@@ -44,6 +45,10 @@ class Adapter { ...@@ -44,6 +45,10 @@ class Adapter {
* @returns {object} * @returns {object}
*/ */
getAuthorizationHeader() { getAuthorizationHeader() {
if (this.authenticating) {
// return an pseudo response with an ignored status
return Promise.reject({ response: { status: 405 } });
}
if (!this.tokenValid()) if (!this.tokenValid())
return this.auth().then((response) => { return this.auth().then((response) => {
return { return {
...@@ -62,6 +67,7 @@ class Adapter { ...@@ -62,6 +67,7 @@ class Adapter {
* @returns {object} * @returns {object}
*/ */
auth() { auth() {
this.authenticating = true;
let adapterConfig = this.config; let adapterConfig = this.config;
return this.axios return this.axios
.get(`${adapterConfig.api}/token`, { .get(`${adapterConfig.api}/token`, {
...@@ -72,9 +78,11 @@ class Adapter { ...@@ -72,9 +78,11 @@ class Adapter {
}) })
.then((response) => { .then((response) => {
this.credentials = response.data; this.credentials = response.data;
this.authenticating = false;
return response; return response;
}) })
.catch((error) => { .catch((error) => {
this.authenticating = false;
return Promise.reject(error); return Promise.reject(error);
}); });
} }
...@@ -116,6 +124,7 @@ class Adapter { ...@@ -116,6 +124,7 @@ class Adapter {
retry = true; retry = true;
} }
break; break;
// ignore 405 from auth in progress
case 503: { case 503: {
retry = true; retry = true;
} }
......
...@@ -10,6 +10,7 @@ class Adapter { ...@@ -10,6 +10,7 @@ class Adapter {
this.protocol = protocol; this.protocol = protocol;
this.config = config; this.config = config;
this.axios = axios; this.axios = axios;
this.authenticating = false;
} }
/** /**
...@@ -46,6 +47,10 @@ class Adapter { ...@@ -46,6 +47,10 @@ class Adapter {
* @returns {object} * @returns {object}
*/ */
getAuthorizationHeader() { getAuthorizationHeader() {
if (this.authenticating) {
// return an pseudo response with an ignored status
return Promise.reject({ response: { status: 405 } });
}
if (!this.tokenValid()) if (!this.tokenValid())
return this.auth().then((response) => { return this.auth().then((response) => {
return { return {
...@@ -64,6 +69,7 @@ class Adapter { ...@@ -64,6 +69,7 @@ class Adapter {
* @returns {object} * @returns {object}
*/ */
auth() { auth() {
this.authenticating = true;
let adapterConfig = this.config; let adapterConfig = this.config;
return this.axios return this.axios
.get(`${adapterConfig.api}/token`, { .get(`${adapterConfig.api}/token`, {
...@@ -74,9 +80,11 @@ class Adapter { ...@@ -74,9 +80,11 @@ class Adapter {
}) })
.then((response) => { .then((response) => {
this.credentials = response.data; this.credentials = response.data;
this.authenticating = false;
return response; return response;
}) })
.catch((error) => { .catch((error) => {
this.authenticating = false;
return Promise.reject(error); return Promise.reject(error);
}); });
} }
...@@ -118,6 +126,7 @@ class Adapter { ...@@ -118,6 +126,7 @@ class Adapter {
retry = true; retry = true;
} }
break; break;
// ignore 405 from auth in progress
case 503: { case 503: {
retry = true; retry = true;
} }
......
...@@ -125,7 +125,7 @@ class GenericSoarProtocol extends GenericProtocol { ...@@ -125,7 +125,7 @@ class GenericSoarProtocol extends GenericProtocol {
* @returns {object} * @returns {object}
*/ */
createValidator(schema) { createValidator(schema) {
if (typeof schema === 'string' && schema.match(/^[\w.]+$/)) { if (typeof schema === 'string' && schema.match(/^[\w.-]+$/)) {
this.loadSchema(schema).then((schema) => { this.loadSchema(schema).then((schema) => {
this.validator = new Validator(schema); this.validator = new Validator(schema);
}); });
......
...@@ -127,7 +127,7 @@ class GenericSoarProtocol extends GenericProtocol { ...@@ -127,7 +127,7 @@ class GenericSoarProtocol extends GenericProtocol {
* @returns {object} * @returns {object}
*/ */
createValidator(schema) { createValidator(schema) {
if (typeof schema === 'string' && schema.match(/^[\w.]+$/)) { if (typeof schema === 'string' && schema.match(/^[\w.-]+$/)) {
this.loadSchema(schema).then((schema) => { this.loadSchema(schema).then((schema) => {
this.validator = new Validator(schema); this.validator = new Validator(schema);
}); });
......
{ {
"name": "@noc-comms-backbone/backbone-adapter-javascript", "name": "@noc-comms-backbone/backbone-adapter-javascript",
"version": "0.1.0", "version": "1.0.0",
"private": true, "private": true,
"contributors": [ "contributors": [
{ {
......
...@@ -8,6 +8,7 @@ export class Adapter { ...@@ -8,6 +8,7 @@ export class Adapter {
this.protocol = protocol; this.protocol = protocol;
this.config = config; this.config = config;
this.axios = axios; this.axios = axios;
this.authenticating = false;
} }
/** /**
...@@ -44,6 +45,10 @@ export class Adapter { ...@@ -44,6 +45,10 @@ export class Adapter {
* @returns {object} * @returns {object}
*/ */
getAuthorizationHeader() { getAuthorizationHeader() {
if (this.authenticating) {
// return an pseudo response with an ignored status
return Promise.reject({ response: { status: 405 } });
}
if (!this.tokenValid()) if (!this.tokenValid())
return this.auth().then((response) => { return this.auth().then((response) => {
return { return {
...@@ -62,6 +67,7 @@ export class Adapter { ...@@ -62,6 +67,7 @@ export class Adapter {
* @returns {object} * @returns {object}
*/ */
auth() { auth() {
this.authenticating = true;
let adapterConfig = this.config; let adapterConfig = this.config;
return this.axios return this.axios
.get(`${adapterConfig.api}/token`, { .get(`${adapterConfig.api}/token`, {
...@@ -72,9 +78,11 @@ export class Adapter { ...@@ -72,9 +78,11 @@ export class Adapter {
}) })
.then((response) => { .then((response) => {
this.credentials = response.data; this.credentials = response.data;
this.authenticating = false;
return response; return response;
}) })
.catch((error) => { .catch((error) => {
this.authenticating = false;
return Promise.reject(error); return Promise.reject(error);
}); });
} }
...@@ -116,6 +124,7 @@ export class Adapter { ...@@ -116,6 +124,7 @@ export class Adapter {
retry = true; retry = true;
} }
break; break;
// ignore 405 from auth in progress
case 503: { case 503: {
retry = true; retry = true;
} }
......
...@@ -125,7 +125,7 @@ export class GenericSoarProtocol extends GenericProtocol { ...@@ -125,7 +125,7 @@ export class GenericSoarProtocol extends GenericProtocol {
* @returns {object} * @returns {object}
*/ */
createValidator(schema) { createValidator(schema) {
if (typeof schema === 'string' && schema.match(/^[\w.]+$/)) { if (typeof schema === 'string' && schema.match(/^[\w.-]+$/)) {
this.loadSchema(schema).then((schema) => { this.loadSchema(schema).then((schema) => {
this.validator = new Validator(schema); this.validator = new Validator(schema);
}); });
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment