From 56a3cccaef4cfc9875702599e8c653b210acd172 Mon Sep 17 00:00:00 2001 From: Jesse Date: Tue, 1 May 2018 17:30:50 -0700 Subject: [PATCH 1/3] install geolix. --- config/dev.exs | 15 +++++++++++++++ config/prod.exs | 14 ++++++++++++++ mix.exs | 1 + mix.lock | 2 ++ 4 files changed, 32 insertions(+) diff --git a/config/dev.exs b/config/dev.exs index 1bc5a81..5fdae9b 100644 --- a/config/dev.exs +++ b/config/dev.exs @@ -56,3 +56,18 @@ config :gigalixir_getting_started, GigalixirGettingStarted.Repo, database: "gigalixir_getting_started_dev", hostname: "localhost", pool_size: 10 + +config :geolix, + databases: [ + %{ + id: :city, + adapter: Geolix.Adapter.MMDB2, + source: "https://storage.googleapis.com/gigalixir/dev/maxmind/GeoLite2-City.mmdb" + }, + %{ + id: :country, + adapter: Geolix.Adapter.MMDB2, + source: "https://storage.googleapis.com/gigalixir/dev/maxmind/GeoLite2-Country.mmdb" + } + ] + diff --git a/config/prod.exs b/config/prod.exs index 75048dc..0a4691d 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -81,3 +81,17 @@ config :libcluster, # Finally import the config/prod.secret.exs # which should be versioned separately. # import_config "prod.secret.exs" +config :geolix, + databases: [ + %{ + id: :city, + adapter: Geolix.Adapter.MMDB2, + source: "https://storage.googleapis.com/gigalixir/dev/maxmind/GeoLite2-City.mmdb" + }, + %{ + id: :country, + adapter: Geolix.Adapter.MMDB2, + source: "https://storage.googleapis.com/gigalixir/dev/maxmind/GeoLite2-Country.mmdb" + } + ] + diff --git a/mix.exs b/mix.exs index ba726a6..3738627 100644 --- a/mix.exs +++ b/mix.exs @@ -35,6 +35,7 @@ defmodule GigalixirGettingStarted.Mixfile do [ {:phoenix, "~> 1.3.0"}, {:phoenix_pubsub, "~> 1.0"}, + { :geolix, "~> 0.16" }, {:phoenix_ecto, "~> 3.2"}, {:postgrex, ">= 0.0.0"}, {:phoenix_html, "~> 2.10"}, diff --git a/mix.lock b/mix.lock index bb4c4e5..38eb999 100644 --- a/mix.lock +++ b/mix.lock @@ -6,9 +6,11 @@ "distillery": {:hex, :distillery, "1.5.2", "eec18b2d37b55b0bcb670cf2bcf64228ed38ce8b046bb30a9b636a6f5a4c0080", [], [], "hexpm"}, "ecto": {:hex, :ecto, "2.2.6", "3fd1067661d6d64851a0d4db9acd9e884c00d2d1aa41cc09da687226cf894661", [], [{:db_connection, "~> 1.1", [hex: :db_connection, repo: "hexpm", optional: true]}, {:decimal, "~> 1.2", [hex: :decimal, repo: "hexpm", optional: false]}, {:mariaex, "~> 0.8.0", [hex: :mariaex, repo: "hexpm", optional: true]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: true]}, {:poolboy, "~> 1.5", [hex: :poolboy, repo: "hexpm", optional: false]}, {:postgrex, "~> 0.13.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:sbroker, "~> 1.0", [hex: :sbroker, repo: "hexpm", optional: true]}], "hexpm"}, "file_system": {:hex, :file_system, "0.2.1", "c4bec8f187d2aabace4beb890f0d4e468f65ca051593db768e533a274d0df587", [], [], "hexpm"}, + "geolix": {:hex, :geolix, "0.16.0", "0095f5e828c0b46596216efaf6a4d46aba3f1a4da3bdfec735b2e49c8cd908fb", [], [{:mmdb2_decoder, "~> 0.2.0", [hex: :mmdb2_decoder, repo: "hexpm", optional: false]}, {:poolboy, "~> 1.0", [hex: :poolboy, repo: "hexpm", optional: false]}], "hexpm"}, "gettext": {:hex, :gettext, "0.13.1", "5e0daf4e7636d771c4c71ad5f3f53ba09a9ae5c250e1ab9c42ba9edccc476263", [], [], "hexpm"}, "libcluster": {:hex, :libcluster, "2.2.3", "fdd7366532799b1a4d4a4cdd113c6d51a593783879a43f862ccfae92423f843f", [], [{:poison, "~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm"}, "mime": {:hex, :mime, "1.1.0", "01c1d6f4083d8aa5c7b8c246ade95139620ef8effb009edde934e0ec3b28090a", [], [], "hexpm"}, + "mmdb2_decoder": {:hex, :mmdb2_decoder, "0.2.0", "34346c43bb1860d38d5505e5edf3d5e31a0d9fce4ee48f0c8c762875bcd05bb2", [], [], "hexpm"}, "phoenix": {:hex, :phoenix, "1.3.0", "1c01124caa1b4a7af46f2050ff11b267baa3edb441b45dbf243e979cd4c5891b", [], [{:cowboy, "~> 1.0", [hex: :cowboy, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 1.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:plug, "~> 1.3.3 or ~> 1.4", [hex: :plug, repo: "hexpm", optional: false]}, {:poison, "~> 2.2 or ~> 3.0", [hex: :poison, repo: "hexpm", optional: false]}], "hexpm"}, "phoenix_ecto": {:hex, :phoenix_ecto, "3.3.0", "702f6e164512853d29f9d20763493f2b3bcfcb44f118af2bc37bb95d0801b480", [], [{:ecto, "~> 2.1", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.9", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, "phoenix_html": {:hex, :phoenix_html, "2.10.4", "d4f99c32d5dc4918b531fdf163e1fd7cf20acdd7703f16f5d02d4db36de803b7", [], [{:plug, "~> 1.0", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm"}, From 203ca7cb2d4a81b2707698877a623a2cd1d579bc Mon Sep 17 00:00:00 2001 From: Jesse Date: Tue, 1 May 2018 17:38:16 -0700 Subject: [PATCH 2/3] test endpoint. --- .../controllers/page_controller.ex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gigalixir_getting_started_web/controllers/page_controller.ex b/lib/gigalixir_getting_started_web/controllers/page_controller.ex index 67195a2..536834d 100644 --- a/lib/gigalixir_getting_started_web/controllers/page_controller.ex +++ b/lib/gigalixir_getting_started_web/controllers/page_controller.ex @@ -2,6 +2,6 @@ defmodule GigalixirGettingStartedWeb.PageController do use GigalixirGettingStartedWeb, :controller def index(conn, _params) do - render conn, "index.html" + text conn, Geolix.lookup(conn.remote_ip) end end From 08514840965552990a837b5f08e7b490bd8a679f Mon Sep 17 00:00:00 2001 From: Jesse Date: Tue, 1 May 2018 17:45:17 -0700 Subject: [PATCH 3/3] better testing. --- .../controllers/page_controller.ex | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/gigalixir_getting_started_web/controllers/page_controller.ex b/lib/gigalixir_getting_started_web/controllers/page_controller.ex index 536834d..061f485 100644 --- a/lib/gigalixir_getting_started_web/controllers/page_controller.ex +++ b/lib/gigalixir_getting_started_web/controllers/page_controller.ex @@ -1,7 +1,8 @@ defmodule GigalixirGettingStartedWeb.PageController do use GigalixirGettingStartedWeb, :controller - def index(conn, _params) do - text conn, Geolix.lookup(conn.remote_ip) + def index(conn, params) do + ip = params["ip"] || conn.remote_ip + json conn, %{ip: inspect(ip), result: inspect(Geolix.lookup(ip))} end end