Packages
literature
0.4.21
0.5.1
0.5.0
0.4.22
0.4.21
0.4.20
0.4.19
0.4.18
0.4.17
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
retired
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.18
0.2.17
0.2.16
0.2.15
0.2.14
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.32
0.1.30
0.1.29
0.1.28
0.1.27
0.1.26
0.1.25
0.1.24
0.1.23
0.1.22
0.1.21
0.1.20
0.1.19
0.1.18
0.1.17
0.1.16
0.1.15
0.1.14
0.1.13
0.1.12
0.1.11
0.1.10
0.1.9
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
A simple CMS / Blog
Current section
Files
Jump to
Current section
Files
lib/literature/cloudflare.ex
defmodule Literature.Cloudflare do
@moduledoc """
Literature Cloudflare
"""
alias Literature.Config
require Logger
@doc """
Purge cloudflare files.
"""
def purge_cloudflare_files(socket, slug) do
if Config.cloudflare_config() do
"#{Config.cloudflare_api_host()}/zones/#{Config.cloudflare_identifier()}/purge_cache"
|> HTTPoison.post(build_json(socket, slug), [
{"Authorization", "Bearer #{Config.cloudflare_token()}"},
{"Content-Type", "application/json"}
])
|> case do
{:ok, response} -> Logger.info(response)
{:error, reason} -> Logger.error(reason)
end
else
:ok
end
end
defp build_json(socket, slug) do
Map.new()
|> Map.put(:files, build_url(socket, slug))
|> Jason.encode!()
end
defp build_url(%{assigns: assigns, endpoint: endpoint, router: router}, slug) do
publication_slug = assigns[:slug] || assigns.params["publication_slug"]
router.__routes__()
|> Enum.reject(&(&1.helper in ~w(literature_dashboard literature_assets)))
|> Enum.find(&(&1.plug_opts == :show && &1.path =~ publication_slug))
|> build_url(endpoint, slug)
end
defp build_url(%{path: path}, endpoint, slug) do
for locale <- Config.cloudflare_locales() do
path =
path
|> String.replace(":locale", locale)
|> String.replace(":slug", slug)
"#{endpoint.url()}#{path}"
end
end
end