Packages
step_flow
1.6.0-rc2
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/teams.ex
defmodule StepFlow.Notifications.Teams do
@moduledoc """
Notification step implementation to send HTTP call to Teams channel.
"""
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 =
Poison.encode!(%{
text:
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