Packages
step_flow
1.3.1
1.9.0-rc2
1.9.0-rc1
1.9.0-rc0
1.8.2
1.8.1
1.8.1-rc8
1.8.1-rc7
1.8.1-rc6
1.8.1-rc5
1.8.1-rc4
1.8.1-rc3
1.8.1-rc2
1.8.1-rc1
1.8.1-rc0
1.8.0
1.8.0-rc3
1.8.0-rc2
1.8.0-rc1
1.8.0-rc0
1.7.3
1.7.3-rc4
1.7.3-rc3
1.7.3-rc2
1.7.3-rc1
1.7.3-rc0
1.7.2
1.7.2-rc4
1.7.2-rc3
1.7.2-rc2
1.7.2-rc1
1.7.2-rc0
1.7.1
1.7.0
1.7.0-rc1
1.7.0-rc0
1.6.1
1.6.1-rc1
1.6.1-rc0
1.6.0
1.6.0-rc9
1.6.0-rc8
1.6.0-rc7
1.6.0-rc6
1.6.0-rc5
1.6.0-rc4
1.6.0-rc3
1.6.0-rc20
1.6.0-rc2
1.6.0-rc19
1.6.0-rc18
1.6.0-rc17
1.6.0-rc16
1.6.0-rc15
1.6.0-rc14
1.6.0-rc13
1.6.0-rc12
1.6.0-rc11
1.6.0-rc10
1.6.0-rc1
1.5.0
1.5.0-rc1
1.4.2-rc2
1.4.2-rc1
1.4.1
1.4.1-rc1
1.4.0
1.4.0-rc4
1.4.0-rc3
1.4.0-rc2
1.4.0-rc1
1.3.1
1.3.0
1.3.0-rc
1.2.0
1.1.0
1.0.0
1.0.0-rc9
1.0.0-rc8
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc1
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.4
0.0.3
0.0.2
0.0.1
Step flow manager for Elixir applications
Current section
Files
Jump to
Current section
Files
lib/step_flow/notifications/webhook.ex
defmodule StepFlow.Notifications.WebHook do
@moduledoc """
Notification step implementation to send HTTP call.
"""
require Logger
alias StepFlow.Step.Helpers
def process(workflow, dates, _step_name, step, _step_id, source_paths) do
Logger.debug("#{__MODULE__}: Make HTTP call")
method =
Helpers.get_value_in_parameters_with_type(step, "method", "string")
|> List.first() || "POST"
url =
Helpers.get_string_or_processed_template_value(workflow, step, dates, source_paths, "url")
body =
Helpers.get_string_or_processed_template_value(workflow, step, dates, source_paths, "body")
headers = get_headers(workflow, step, dates, source_paths)
Logger.debug(
"#{__MODULE__}: #{method} #{url}, headers: #{inspect(headers)}, body: #{inspect(body)}"
)
{:ok, response} = HTTPoison.request(method, url, body, headers)
if response.status_code == 200 do
{:ok, response.body}
else
Logger.error("Unable to notify: #{inspect(response)}")
{:error,
"response status code: #{response.status_code} with body: #{inspect(response.body)}"}
end
end
def get_headers(workflow, step, dates, source_paths) do
Helpers.get_string_or_processed_template_value(
workflow,
step,
dates,
source_paths,
"headers",
"{}"
)
|> Jason.decode()
|> case do
{:ok, parsed} ->
Enum.map(parsed, fn {key, value} ->
{key, value}
end)
_ ->
{:error, "unable to headers"}
end
end
end