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.
## [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
### Added
......@@ -26,5 +36,6 @@ Create a soar protocol instance
- implement retreive schema version by tag/branch/commitref
- 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
[unreleased]: https://git.noc.ac.uk/communications-backbone-system/backbone-adapter-javascript/compare/v0.1.0...dev
......@@ -8,6 +8,7 @@ class Adapter {
this.protocol = protocol;
this.config = config;
this.axios = axios;
this.authenticating = false;
}
/**
......@@ -44,6 +45,10 @@ class Adapter {
* @returns {object}
*/
getAuthorizationHeader() {
if (this.authenticating) {
// return an pseudo response with an ignored status
return Promise.reject({ response: { status: 405 } });
}
if (!this.tokenValid())
return this.auth().then((response) => {
return {
......@@ -62,6 +67,7 @@ class Adapter {
* @returns {object}
*/
auth() {
this.authenticating = true;
let adapterConfig = this.config;
return this.axios
.get(`${adapterConfig.api}/token`, {
......@@ -72,9 +78,11 @@ class Adapter {
})
.then((response) => {
this.credentials = response.data;
this.authenticating = false;
return response;
})
.catch((error) => {
this.authenticating = false;
return Promise.reject(error);
});
}
......@@ -116,6 +124,7 @@ class Adapter {
retry = true;
}
break;
// ignore 405 from auth in progress
case 503: {
retry = true;
}
......
......@@ -10,6 +10,7 @@ class Adapter {
this.protocol = protocol;
this.config = config;
this.axios = axios;
this.authenticating = false;
}
/**
......@@ -46,6 +47,10 @@ class Adapter {
* @returns {object}
*/
getAuthorizationHeader() {
if (this.authenticating) {
// return an pseudo response with an ignored status
return Promise.reject({ response: { status: 405 } });
}
if (!this.tokenValid())
return this.auth().then((response) => {
return {
......@@ -64,6 +69,7 @@ class Adapter {
* @returns {object}
*/
auth() {
this.authenticating = true;
let adapterConfig = this.config;
return this.axios
.get(`${adapterConfig.api}/token`, {
......@@ -74,9 +80,11 @@ class Adapter {
})
.then((response) => {
this.credentials = response.data;
this.authenticating = false;
return response;
})
.catch((error) => {
this.authenticating = false;
return Promise.reject(error);
});
}
......@@ -118,6 +126,7 @@ class Adapter {
retry = true;
}
break;
// ignore 405 from auth in progress
case 503: {
retry = true;
}
......
......@@ -125,7 +125,7 @@ class GenericSoarProtocol extends GenericProtocol {
* @returns {object}
*/
createValidator(schema) {
if (typeof schema === 'string' && schema.match(/^[\w.]+$/)) {
if (typeof schema === 'string' && schema.match(/^[\w.-]+$/)) {
this.loadSchema(schema).then((schema) => {
this.validator = new Validator(schema);
});
......
......@@ -127,7 +127,7 @@ class GenericSoarProtocol extends GenericProtocol {
* @returns {object}
*/
createValidator(schema) {
if (typeof schema === 'string' && schema.match(/^[\w.]+$/)) {
if (typeof schema === 'string' && schema.match(/^[\w.-]+$/)) {
this.loadSchema(schema).then((schema) => {
this.validator = new Validator(schema);
});
......
{
"name": "@noc-comms-backbone/backbone-adapter-javascript",
"version": "0.1.0",
"version": "1.0.0",
"private": true,
"contributors": [
{
......
......@@ -8,6 +8,7 @@ export class Adapter {
this.protocol = protocol;
this.config = config;
this.axios = axios;
this.authenticating = false;
}
/**
......@@ -44,6 +45,10 @@ export class Adapter {
* @returns {object}
*/
getAuthorizationHeader() {
if (this.authenticating) {
// return an pseudo response with an ignored status
return Promise.reject({ response: { status: 405 } });
}
if (!this.tokenValid())
return this.auth().then((response) => {
return {
......@@ -62,6 +67,7 @@ export class Adapter {
* @returns {object}
*/
auth() {
this.authenticating = true;
let adapterConfig = this.config;
return this.axios
.get(`${adapterConfig.api}/token`, {
......@@ -72,9 +78,11 @@ export class Adapter {
})
.then((response) => {
this.credentials = response.data;
this.authenticating = false;
return response;
})
.catch((error) => {
this.authenticating = false;
return Promise.reject(error);
});
}
......@@ -116,6 +124,7 @@ export class Adapter {
retry = true;
}
break;
// ignore 405 from auth in progress
case 503: {
retry = true;
}
......
......@@ -125,7 +125,7 @@ export class GenericSoarProtocol extends GenericProtocol {
* @returns {object}
*/
createValidator(schema) {
if (typeof schema === 'string' && schema.match(/^[\w.]+$/)) {
if (typeof schema === 'string' && schema.match(/^[\w.-]+$/)) {
this.loadSchema(schema).then((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