From 341e40d075abb536a9c752bb833116b761edc053 Mon Sep 17 00:00:00 2001
From: Dan Jones <dan.jones@noc.ac.uk>
Date: Mon, 20 Feb 2023 10:15:05 +0000
Subject: [PATCH] fix: correct reference to error status code

+ add catch and retry in poll method
---
 dist/adapter.esm.js  | 22 +++++++++++++++++-----
 dist/adapter.js      | 22 +++++++++++++++++-----
 src/adapter/index.js | 22 +++++++++++++++++-----
 3 files changed, 51 insertions(+), 15 deletions(-)

diff --git a/dist/adapter.esm.js b/dist/adapter.esm.js
index 97b4e82..cfb0379 100644
--- a/dist/adapter.esm.js
+++ b/dist/adapter.esm.js
@@ -82,10 +82,11 @@ class Adapter {
   /**
    * Call the GET /receive endpoint and process the messages with decode
    * 
-   * Returns the response  
+   * Returns the response
+   * @param {boolean} is_retry  
    * @returns {object}
    */
-  poll() {
+  poll(is_retry=false) {
     let adapterConfig = this.config;
     return this.getAuthorizationHeader()
       .then((headers) => {
@@ -105,7 +106,18 @@ class Adapter {
         return response;
       })
       .catch((error) => {
-        return Promise.reject(error);
+        let retry = false;
+        switch(error.response.status) {
+          case 403: {
+            this.credentials = null;
+            retry = true;
+          } break;
+          case 503: {
+            retry = true;
+          }
+        }
+        if (retry && !is_retry) return this.poll(true);
+        else return Promise.reject(error);
       });
   }
 
@@ -138,7 +150,7 @@ class Adapter {
       })
       .catch((error) => {
         let retry = false;
-        switch(error.response.status_code) {
+        switch(error.response.status) {
           case 403: {
             this.credentials = null;
             retry = true;
@@ -183,7 +195,7 @@ class Adapter {
       })
       .catch((error) => {
         let retry = false;
-        switch(error.response.status_code) {
+        switch(error.response.status) {
           case 403: {
             this.credentials = null;
             retry = true;
diff --git a/dist/adapter.js b/dist/adapter.js
index 57c294f..a20309e 100644
--- a/dist/adapter.js
+++ b/dist/adapter.js
@@ -84,10 +84,11 @@ class Adapter {
   /**
    * Call the GET /receive endpoint and process the messages with decode
    * 
-   * Returns the response  
+   * Returns the response
+   * @param {boolean} is_retry  
    * @returns {object}
    */
-  poll() {
+  poll(is_retry=false) {
     let adapterConfig = this.config;
     return this.getAuthorizationHeader()
       .then((headers) => {
@@ -107,7 +108,18 @@ class Adapter {
         return response;
       })
       .catch((error) => {
-        return Promise.reject(error);
+        let retry = false;
+        switch(error.response.status) {
+          case 403: {
+            this.credentials = null;
+            retry = true;
+          } break;
+          case 503: {
+            retry = true;
+          }
+        }
+        if (retry && !is_retry) return this.poll(true);
+        else return Promise.reject(error);
       });
   }
 
@@ -140,7 +152,7 @@ class Adapter {
       })
       .catch((error) => {
         let retry = false;
-        switch(error.response.status_code) {
+        switch(error.response.status) {
           case 403: {
             this.credentials = null;
             retry = true;
@@ -185,7 +197,7 @@ class Adapter {
       })
       .catch((error) => {
         let retry = false;
-        switch(error.response.status_code) {
+        switch(error.response.status) {
           case 403: {
             this.credentials = null;
             retry = true;
diff --git a/src/adapter/index.js b/src/adapter/index.js
index 51ecde7..3d48d0e 100644
--- a/src/adapter/index.js
+++ b/src/adapter/index.js
@@ -82,10 +82,11 @@ export class Adapter {
   /**
    * Call the GET /receive endpoint and process the messages with decode
    * 
-   * Returns the response  
+   * Returns the response
+   * @param {boolean} is_retry  
    * @returns {object}
    */
-  poll() {
+  poll(is_retry=false) {
     let adapterConfig = this.config;
     return this.getAuthorizationHeader()
       .then((headers) => {
@@ -105,7 +106,18 @@ export class Adapter {
         return response;
       })
       .catch((error) => {
-        return Promise.reject(error);
+        let retry = false;
+        switch(error.response.status) {
+          case 403: {
+            this.credentials = null;
+            retry = true;
+          } break;
+          case 503: {
+            retry = true;
+          }
+        }
+        if (retry && !is_retry) return this.poll(true);
+        else return Promise.reject(error);
       });
   }
 
@@ -138,7 +150,7 @@ export class Adapter {
       })
       .catch((error) => {
         let retry = false;
-        switch(error.response.status_code) {
+        switch(error.response.status) {
           case 403: {
             this.credentials = null;
             retry = true;
@@ -183,7 +195,7 @@ export class Adapter {
       })
       .catch((error) => {
         let retry = false;
-        switch(error.response.status_code) {
+        switch(error.response.status) {
           case 403: {
             this.credentials = null;
             retry = true;
-- 
GitLab