From 1d365df9c8f0fe1804255d85aee5843c91485320 Mon Sep 17 00:00:00 2001 From: Jilling Kingma Date: Wed, 14 Sep 2022 09:34:55 +0200 Subject: [PATCH 1/5] Added jsonResponse empty string catch --- src/services/terminalLocalAPI.ts | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/services/terminalLocalAPI.ts b/src/services/terminalLocalAPI.ts index 3d2a86e..8899bf6 100644 --- a/src/services/terminalLocalAPI.ts +++ b/src/services/terminalLocalAPI.ts @@ -45,7 +45,7 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { public async request( terminalApiRequest: TerminalApiRequest, securityKey: SecurityKey, - ): Promise { + ): Promise { const formattedRequest = ObjectSerializer.serialize(terminalApiRequest, "TerminalApiRequest"); const saleToPoiSecuredMessage: SaleToPOISecuredMessage = NexoCrypto.encrypt( terminalApiRequest.SaleToPOIRequest.MessageHeader, @@ -62,15 +62,20 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { securedPaymentRequest ); - const terminalApiSecuredResponse: TerminalApiSecuredResponse = - ObjectSerializer.deserialize(jsonResponse, "TerminalApiSecuredResponse"); + // Catch an empty jsonResponse (i.e. Abort Request) + if(jsonResponse == ""){ + return Promise.resolve(); + } else { + const terminalApiSecuredResponse: TerminalApiSecuredResponse = + ObjectSerializer.deserialize(jsonResponse, "TerminalApiSecuredResponse"); - const response = this.nexoCrypto.decrypt( - terminalApiSecuredResponse.SaleToPOIResponse, - securityKey, - ); + const response = this.nexoCrypto.decrypt( + terminalApiSecuredResponse.SaleToPOIResponse, + securityKey, + ); - return ObjectSerializer.deserialize(JSON.parse(response), "TerminalApiResponse"); + return ObjectSerializer.deserialize(JSON.parse(response), "TerminalApiResponse"); + } } } From 9a12c9e46b721658d6f4ed171c26b68778faaa84 Mon Sep 17 00:00:00 2001 From: Jilling Kingma Date: Mon, 19 Sep 2022 11:20:46 +0200 Subject: [PATCH 2/5] Changed solution to try catch block and custom error --- src/services/terminalLocalAPI.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/services/terminalLocalAPI.ts b/src/services/terminalLocalAPI.ts index 8899bf6..218e49c 100644 --- a/src/services/terminalLocalAPI.ts +++ b/src/services/terminalLocalAPI.ts @@ -45,7 +45,7 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { public async request( terminalApiRequest: TerminalApiRequest, securityKey: SecurityKey, - ): Promise { + ): Promise { const formattedRequest = ObjectSerializer.serialize(terminalApiRequest, "TerminalApiRequest"); const saleToPoiSecuredMessage: SaleToPOISecuredMessage = NexoCrypto.encrypt( terminalApiRequest.SaleToPOIRequest.MessageHeader, @@ -62,19 +62,22 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { securedPaymentRequest ); + console.log("jsonresponse" + jsonResponse.toString()); // Catch an empty jsonResponse (i.e. Abort Request) - if(jsonResponse == ""){ - return Promise.resolve(); - } else { + + try { const terminalApiSecuredResponse: TerminalApiSecuredResponse = ObjectSerializer.deserialize(jsonResponse, "TerminalApiSecuredResponse"); const response = this.nexoCrypto.decrypt( terminalApiSecuredResponse.SaleToPOIResponse, securityKey, - ); - + ); return ObjectSerializer.deserialize(JSON.parse(response), "TerminalApiResponse"); + + } catch (e) { + const requestType = terminalApiRequest.SaleToPOIRequest.MessageHeader.MessageCategory; + throw new Error(`Request of type ${requestType} has no response!`); } } } From e36af2f7c751bc4c0cf94e881ff97af8c3697096 Mon Sep 17 00:00:00 2001 From: Jilling Kingma Date: Mon, 19 Sep 2022 13:28:56 +0200 Subject: [PATCH 3/5] add catch block for nexocryptoexception --- src/services/terminalLocalAPI.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/services/terminalLocalAPI.ts b/src/services/terminalLocalAPI.ts index 218e49c..232cb36 100644 --- a/src/services/terminalLocalAPI.ts +++ b/src/services/terminalLocalAPI.ts @@ -31,6 +31,7 @@ import { TerminalApiSecuredRequest, TerminalApiSecuredResponse } from "../typings/terminal/models"; +import NexoCryptoException from "./exception/nexoCryptoException"; class TerminalLocalAPI extends ApiKeyAuthenticatedService { private readonly localRequest: LocalRequest; @@ -62,9 +63,10 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { securedPaymentRequest ); - console.log("jsonresponse" + jsonResponse.toString()); - // Catch an empty jsonResponse (i.e. Abort Request) + console.log("jsonresponse type" + typeof jsonResponse); + console.log(jsonResponse); + // Catch an empty jsonResponse (i.e. Abort Request) try { const terminalApiSecuredResponse: TerminalApiSecuredResponse = ObjectSerializer.deserialize(jsonResponse, "TerminalApiSecuredResponse"); @@ -76,8 +78,12 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { return ObjectSerializer.deserialize(JSON.parse(response), "TerminalApiResponse"); } catch (e) { - const requestType = terminalApiRequest.SaleToPOIRequest.MessageHeader.MessageCategory; - throw new Error(`Request of type ${requestType} has no response!`); + if(e instanceof NexoCryptoException){ + throw e; + } else { + const requestType = terminalApiRequest.SaleToPOIRequest.MessageHeader.MessageCategory; + throw new Error(`Request of type ${requestType} has no response!`); + } } } } From 692a13305833e085e4d39c880d511ff005e94930 Mon Sep 17 00:00:00 2001 From: Jilling Kingma Date: Mon, 19 Sep 2022 14:18:46 +0200 Subject: [PATCH 4/5] return undefined response item --- src/services/terminalLocalAPI.ts | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/services/terminalLocalAPI.ts b/src/services/terminalLocalAPI.ts index 232cb36..4b4ab0d 100644 --- a/src/services/terminalLocalAPI.ts +++ b/src/services/terminalLocalAPI.ts @@ -32,6 +32,8 @@ import { TerminalApiSecuredResponse } from "../typings/terminal/models"; import NexoCryptoException from "./exception/nexoCryptoException"; +import HttpClientException from "../httpClient/httpClientException"; +import apiException from "./exception/apiException"; class TerminalLocalAPI extends ApiKeyAuthenticatedService { private readonly localRequest: LocalRequest; @@ -58,16 +60,13 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { SaleToPOIRequest: saleToPoiSecuredMessage, }, "TerminalApiSecuredRequest"); - const jsonResponse = await getJsonResponse( - this.localRequest, - securedPaymentRequest - ); - - console.log("jsonresponse type" + typeof jsonResponse); - console.log(jsonResponse); - - // Catch an empty jsonResponse (i.e. Abort Request) + // Catch Exceptions and an empty jsonResponse (i.e. Abort Request) try { + const jsonResponse = await getJsonResponse( + this.localRequest, + securedPaymentRequest + ); + const terminalApiSecuredResponse: TerminalApiSecuredResponse = ObjectSerializer.deserialize(jsonResponse, "TerminalApiSecuredResponse"); @@ -78,11 +77,10 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { return ObjectSerializer.deserialize(JSON.parse(response), "TerminalApiResponse"); } catch (e) { - if(e instanceof NexoCryptoException){ + if(e instanceof NexoCryptoException || e instanceof HttpClientException || e instanceof apiException) { throw e; } else { - const requestType = terminalApiRequest.SaleToPOIRequest.MessageHeader.MessageCategory; - throw new Error(`Request of type ${requestType} has no response!`); + return new TerminalApiResponse(); } } } From aefb0e5e1967a0d3a211a496f561c2eddd68c2d1 Mon Sep 17 00:00:00 2001 From: Jilling Kingma Date: Wed, 28 Sep 2022 11:05:55 +0200 Subject: [PATCH 5/5] made simple if statement instead of catch block --- src/services/terminalLocalAPI.ts | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/src/services/terminalLocalAPI.ts b/src/services/terminalLocalAPI.ts index 4b4ab0d..b308f79 100644 --- a/src/services/terminalLocalAPI.ts +++ b/src/services/terminalLocalAPI.ts @@ -31,9 +31,6 @@ import { TerminalApiSecuredRequest, TerminalApiSecuredResponse } from "../typings/terminal/models"; -import NexoCryptoException from "./exception/nexoCryptoException"; -import HttpClientException from "../httpClient/httpClientException"; -import apiException from "./exception/apiException"; class TerminalLocalAPI extends ApiKeyAuthenticatedService { private readonly localRequest: LocalRequest; @@ -60,13 +57,15 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { SaleToPOIRequest: saleToPoiSecuredMessage, }, "TerminalApiSecuredRequest"); - // Catch Exceptions and an empty jsonResponse (i.e. Abort Request) - try { - const jsonResponse = await getJsonResponse( - this.localRequest, - securedPaymentRequest - ); + const jsonResponse = await getJsonResponse( + this.localRequest, + securedPaymentRequest + ); + // Catch an empty jsonResponse (i.e. Abort Request) + if(!jsonResponse) { + return new TerminalApiResponse(); + } else { const terminalApiSecuredResponse: TerminalApiSecuredResponse = ObjectSerializer.deserialize(jsonResponse, "TerminalApiSecuredResponse"); @@ -75,13 +74,6 @@ class TerminalLocalAPI extends ApiKeyAuthenticatedService { securityKey, ); return ObjectSerializer.deserialize(JSON.parse(response), "TerminalApiResponse"); - - } catch (e) { - if(e instanceof NexoCryptoException || e instanceof HttpClientException || e instanceof apiException) { - throw e; - } else { - return new TerminalApiResponse(); - } } } }