Skip to main content
Version: LOC v0.9 (legacy)

Payload JSON Parser

Parse trigger payload to JSON and write to the session storage.

Logic typeInputOutput
Genericctx.payload()Session variable parsed (type: any or null if not parsed successfully)
payload-json-parser.js
import { LoggingAgent, SessionStorageAgent } from "@fstnetwork/loc-logic-sdk";

export async function run(ctx) {
// read payload
const payload = await ctx.payload();

let data = null;
if ("http" in payload) {
data = payload.http.request.data;
} else if ("messageQueue" in payload) {
data = payload.messageQueue.data;
} else {
throw new Error("this logic only accepts http/mq payload");
}

let parsed = null;
try {
// decode body from Uint8Array to string and convert to JSON
parsed = JSON.parse(new TextDecoder().decode(new Uint8Array(data)));
} catch (e) {
LoggingAgent.warn({
error: true,
errorMessage: `unable to parse JSON payload: ${e.message}`,
stack: e.stack,
taskKey: ctx.task.taskKey,
});
}

// log parsed JSON
LoggingAgent.info({ parsed: parsed });

// write the parsed data into session storage
await SessionStorageAgent.putJson("parsed", parsed);
}

export async function handleError(ctx, error) {
// error logging
LoggingAgent.error({
error: true,
errorMessage: error.message,
stack: error.stack,
taskKey: ctx.task.taskKey,
});
}