samples-js/functions/httpSyncStart.js (31 lines of code) (raw):
const { app } = require("@azure/functions");
const df = require("durable-functions");
const timeout = "timeout";
const retryInterval = "retryInterval";
app.http("httpSyncStart", {
methods: ["POST"],
route: "orchestrators/wait/{orchestratorName}",
authLevel: "anonymous",
extraInputs: [df.input.durableClient()],
handler: async function (request, context) {
const client = df.getClient(context);
const body = await request.json();
const instanceId = await client.startNew(request.params.orchestratorName, { input: body });
context.log(`Started orchestration with ID = '${instanceId}'.`);
const timeoutInMilliseconds = getTimeInMilliseconds(request, timeout) || 30000;
const retryIntervalInMilliseconds = getTimeInMilliseconds(request, retryInterval) || 1000;
const response = await client.waitForCompletionOrCreateCheckStatusResponse(
request,
instanceId,
{
timeoutInMilliseconds,
retryIntervalInMilliseconds,
}
);
return response;
},
});
function getTimeInMilliseconds(req, queryParameterName) {
// parameters are passed in as seconds
const queryValue = req.query.get(queryParameterName);
// return as milliseconds
return queryValue ? queryValue * 1000 : undefined;
}