1
0
Fork 0
mirror of https://github.com/edgurgel/httparrot synced 2025-04-24 15:27:13 -04:00
httparrot/lib/httparrot/ip_handler.ex
Eduardo Gurgel 704b38006d Add @moduledoc for most handlers
[ci skip]
2014-01-05 12:38:20 -03:00

29 lines
604 B
Elixir

defmodule HTTParrot.IPHandler do
@moduledoc """
Returns Origin IP
"""
def init(_transport, _req, _opts) do
{:upgrade, :protocol, :cowboy_rest}
end
def allowed_methods(req, state) do
{["GET"], req, state}
end
def content_types_provided(req, state) do
{[{{"application", "json", []}, :get_json}], req, state}
end
def get_json(req, state) do
{{ip, _port}, req} = :cowboy_req.peer(req)
{response(ip), req, state}
end
defp response(ip) do
ip = :inet_parse.ntoa(ip) |> to_string
[origin: ip] |> JSEX.encode!
end
def terminate(_, _, _), do: :ok
end