api-transient-storage
helper library
A helper library to query with api-transient-storage api gateway
1. Getting Started
npm i @notarise-gov-sg/transient-storage-lib
2. Import the helper functions
This lib can be used as a class or through individual functions, depending on coding preference
<endpoint> refers to the api-transient-storage api gateway url
<apiKey> refers to the api-transient-storage api gateway key
<reference> refers to the request id, e.g. uuid
<document> refers to the OA document to upload
Function way
import { getQueueNumber, buildStoredUrl, uploadDocument, VERIFY_URL } from "@notarise-gov-sg/transient-storage-lib";
const {id, key} = await getQueueNumber(<endpoint>, <apiKey>, <reference>);
const storedUrl: string = buildStoredUrl(<endpoint>, VERIFY_URL.PROD, id, key);
const {ttl} = await uploadDocument(<endpoint>, <apiKey>, <document>, id, <reference>);
Tip: To avoid having to repeatedly provide the api-transient-storage gateway endpoint, apiKey, and the verify.gov.sg subdomain ('https://dev.verify.gov.sg' or 'https://www.verify.gov.sg') evertime you invoke the helper functions, you can bind
those arguments.
In the tsconfig.json file, remember to set "strictBindCallApply": true
to get type checking for the bounded function.
import { getQueueNumber as _getQueueNumber } from "@notarise-gov-sg/transient-storage-lib";
const getQueueNumber = _getQueueNumber.bind(null, <endpoint>, <apiKey>);
const {id, key} = await getQueueNumber(<reference>);
Class way
import { TransientStorageService, TransientStorageServiceImpl, VERIFY_URL } from "@notarise-gov-sg/transient-storage-lib";
const transientStorageService: TransientStorageServiceImpl = new TransientStorageService(<endpoint>, <apiKey>, VERIFY_URL.PROD);
const {id, key} = transientStorageService.getQueueNumber(<reference>);
const storedUrl = transientStorageService.buildStoredUrl(id, key);
const {ttl} = await transientStorageService.uploadDocument(<document>, id, <reference>);
To do all the above in a single line
Function way
import { handleDocumentStorage as _handleDocumentStorage, VERIFY_URL } from "@notarise-gov-sg/transient-storage-lib";\
export const handleDocumentStorage = _handleDocumentStorage.bind(null, <endpoint>, <apiKey>, VERIFY_URL.PROD);
const {ttl, storedUrl} = handleDocumentStorage(<reference>, <document>);
Class way
import { TransientStorageService, TransientStorageServiceImpl, VERIFY_URL } from "@notarise-gov-sg/transient-storage-lib";
const transientStorageService: TransientStorageServiceImpl = new TransientStorageService(<endpoint>, <apiKey>, VERIFY_URL.PROD);
const {ttl, storedUrl} = transientStorageService.handleDocumentStorage(<reference>, <document>);
3. To enable debugging
To view the logs produced by this library during run time, append transient-storage-lib:*
to the DEBUG
env variable, e.g.
DEBUG='api-notarize-healthcerts:*,transient-storage-lib:*'
If you are using the debug
npm module, you can append transient-storage-lib:*
to the DEBUG
env variable programatically like so
import debug from "debug";
debug.enable("api-notarize-healthcerts:*,transient-storage-lib:*"); // append transient-storage-lib:*
const logger = debug("api-notarize-healthcerts");