Current section
Files
Jump to
Current section
Files
lib/tower/slack/client.ex
defmodule Tower.Slack.Client do
def deliver(message) do
post(webhook_url(), message)
end
defp post(url, payload) when is_map(payload) do
:httpc.request(
:post,
{
~c"#{url}",
[],
~c"application/json",
Jason.encode!(payload)
},
[
ssl: tls_client_options()
],
[]
)
end
defp tls_client_options do
[
verify: :verify_peer,
cacerts: :public_key.cacerts_get(),
# Support wildcard certificates
customize_hostname_check: [
match_fun: :public_key.pkix_verify_hostname_match_fun(:https)
]
]
end
defp webhook_url do
Application.fetch_env!(:tower_slack, :webhook_url)
end
end