Current section

Files

Jump to
paraxial lib paraxial customer_plugs assign_cloud_ip.ex
Raw

lib/paraxial/customer_plugs/assign_cloud_ip.ex

defmodule Paraxial.AssignCloudIP do
@moduledoc """
This plug is used to add metadata to the conn assigns if an IP matches a cloud provider.
"""
import Plug.Conn
def init(opts), do: opts
def call(conn, _opts) do
iptrie = :persistent_term.get({Paraxial.Fetcher, :cloud_trie})
lookup = Iptrie.lookup(iptrie, conn.remote_ip)
if is_nil(lookup) do
assign(conn, :paraxial_cloud_ip, nil)
else
assign(conn, :paraxial_cloud_ip, elem(lookup, 1))
end
end
end