From a1b2d9153bd7231313449e17ad5e75868b714b06 Mon Sep 17 00:00:00 2001 From: Andrew Richardson Date: Fri, 24 Feb 2023 10:08:28 -0500 Subject: [PATCH 1/2] Add deleteContractListener Signed-off-by: Andrew Richardson --- lib/firefly.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/firefly.ts b/lib/firefly.ts index 5bbebff..ccf42fa 100644 --- a/lib/firefly.ts +++ b/lib/firefly.ts @@ -510,6 +510,10 @@ export default class FireFly extends HttpBase { return this.getMany('/contracts/listeners', filter, options); } + async deleteContractListener(id: string, options?: FireFlyDeleteOptions) { + await this.deleteOne(`/contracts/listeners/${id}`, options); + } + getContractAPIListeners( apiName: string, eventPath: string, From 9abe619ef64f7a91ff635b42c0241094158e7f55 Mon Sep 17 00:00:00 2001 From: Andrew Richardson Date: Fri, 24 Feb 2023 10:08:47 -0500 Subject: [PATCH 2/2] Add special error class for idempotency key reuse Signed-off-by: Andrew Richardson --- lib/http.ts | 9 +++++++-- lib/interfaces.ts | 2 ++ package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/http.ts b/lib/http.ts index b055de5..9f6d75b 100644 --- a/lib/http.ts +++ b/lib/http.ts @@ -8,6 +8,7 @@ import { FireFlyReplaceOptions, FireFlyUpdateOptions, FireFlyDeleteOptions, + FireFlyIdempotencyError, } from './interfaces'; function isSuccess(status: number) { @@ -74,8 +75,12 @@ export default class HttpBase { protected async wrapError(response: Promise>) { return response.catch((err) => { if (axios.isAxiosError(err)) { - const errorMessage = err.response?.data?.error; - const ffError = new FireFlyError(errorMessage ?? err.message, err, err.request.path); + const errorMessage = err.response?.data?.error ?? err.message; + const errorClass = + errorMessage?.includes('FF10430') || errorMessage?.includes('FF10431') + ? FireFlyIdempotencyError + : FireFlyError; + const ffError = new errorClass(errorMessage, err, err.request.path); if (this.errorHandler !== undefined) { this.errorHandler(ffError); } diff --git a/lib/interfaces.ts b/lib/interfaces.ts index 9e7ad33..acb5edc 100644 --- a/lib/interfaces.ts +++ b/lib/interfaces.ts @@ -21,6 +21,8 @@ export class FireFlyError extends Error { } } +export class FireFlyIdempotencyError extends FireFlyError {} + interface FireFlyBaseHttpOptions { requestConfig?: AxiosRequestConfig; } diff --git a/package-lock.json b/package-lock.json index 8d6b8a4..ac52acb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@hyperledger/firefly-sdk", - "version": "1.2.6", + "version": "1.2.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@hyperledger/firefly-sdk", - "version": "1.2.6", + "version": "1.2.7", "license": "Apache-2.0", "dependencies": { "axios": "^0.26.1", diff --git a/package.json b/package.json index db46f53..40c0f44 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@hyperledger/firefly-sdk", - "version": "1.2.6", + "version": "1.2.7", "description": "Client SDK for Hyperledger FireFly", "main": "dist/index.js", "types": "dist/index.d.ts",