From 6e92b6c36ecfd056988bbace759a8a7c684d6122 Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Sun, 6 Jun 2021 20:34:36 +0200 Subject: [PATCH] Add SendHttpRequest designer plugin Fixes #1069 --- .../src/plugins/send-http-request-plugin.tsx | 24 +++++++++++++++++++ .../src/services/plugin-manager.ts | 2 ++ 2 files changed, 26 insertions(+) create mode 100644 src/designer/elsa-workflows-studio/src/plugins/send-http-request-plugin.tsx diff --git a/src/designer/elsa-workflows-studio/src/plugins/send-http-request-plugin.tsx b/src/designer/elsa-workflows-studio/src/plugins/send-http-request-plugin.tsx new file mode 100644 index 000000000..d9670c0ed --- /dev/null +++ b/src/designer/elsa-workflows-studio/src/plugins/send-http-request-plugin.tsx @@ -0,0 +1,24 @@ +import {ElsaPlugin} from "../services/elsa-plugin"; +import {eventBus} from '../services/event-bus'; +import {ActivityDesignDisplayContext, EventTypes, SyntaxNames} from "../models"; +import {h} from "@stencil/core"; +import {parseJson} from "../utils/utils"; + +export class SendHttpRequestPlugin implements ElsaPlugin { + constructor() { + eventBus.on(EventTypes.ActivityDesignDisplaying, this.onActivityDesignDisplaying); + } + + onActivityDesignDisplaying(context: ActivityDesignDisplayContext) { + const activityModel = context.activityModel; + + if (activityModel.type !== 'SendHttpRequest') + return; + + const props = activityModel.properties || []; + const syntax = SyntaxNames.Json; + const supportedStatusCodes = props.find(x => x.name == 'SupportedStatusCodes') || {expressions: {'Json': '[]'}, syntax: syntax}; + const expression = supportedStatusCodes.expressions[syntax]; + context.outcomes = !!expression['$values'] ? expression['$values'] : parseJson(expression) || []; + } +} diff --git a/src/designer/elsa-workflows-studio/src/services/plugin-manager.ts b/src/designer/elsa-workflows-studio/src/services/plugin-manager.ts index 22587f1e2..695ded451 100644 --- a/src/designer/elsa-workflows-studio/src/services/plugin-manager.ts +++ b/src/designer/elsa-workflows-studio/src/services/plugin-manager.ts @@ -16,6 +16,7 @@ import {SignalReceivedPlugin} from "../plugins/signal-received-plugin"; import {SendSignalPlugin} from "../plugins/send-signal-plugin"; import {UserTaskPlugin} from "../plugins/user-task-plugin"; import {StatePlugin} from "../plugins/state-plugin"; +import {SendHttpRequestPlugin} from "../plugins/send-http-request-plugin"; export class PluginManager { @@ -30,6 +31,7 @@ export class PluginManager { new ForkPlugin(), new SwitchPlugin(), new HttpEndpointPlugin(), + new SendHttpRequestPlugin(), new TimerPlugin(), new StartAtPlugin(), new CronPlugin(),