diff --git a/config/config.exs b/config/config.exs index 1127822..eef8600 100644 --- a/config/config.exs +++ b/config/config.exs @@ -29,8 +29,7 @@ config :logger, :default_formatter, # Use Jason for JSON parsing in Phoenix config :phoenix, :json_library, Jason -config :camp_api, :grist, - api_key: System.get_env("GRIST_API_KEY") +config :camp_api, :grist, api_key: System.get_env("GRIST_API_KEY") # Import environment specific config. This must remain at the bottom # of this file so it overrides the configuration defined above. diff --git a/lib/camp_api/grist.ex b/lib/camp_api/grist.ex index 02ed8f8..8e8d97a 100644 --- a/lib/camp_api/grist.ex +++ b/lib/camp_api/grist.ex @@ -10,6 +10,12 @@ defmodule CampApi.Grist do end defp request(method, url) do - Req.request(method: method, url: url, headers: [{"authorization", "Bearer " <> Application.fetch_env!(:camp_api, :grist)[:api_key]}]) + Req.request( + method: method, + url: url, + headers: [ + {"authorization", "Bearer " <> Application.fetch_env!(:camp_api, :grist)[:api_key]} + ] + ) end end diff --git a/lib/camp_api/grist/gauge.ex b/lib/camp_api/grist/gauge.ex index d96b05d..2516074 100644 --- a/lib/camp_api/grist/gauge.ex +++ b/lib/camp_api/grist/gauge.ex @@ -2,7 +2,6 @@ defmodule CampApi.Grist.Gauge do @moduledoc false alias CampApi.Grist - @gauge_doc "wpwHRjzfdR9A" @gauge_table "Infos" diff --git a/lib/camp_api_web/controllers/grist_controller.ex b/lib/camp_api_web/controllers/grist_controller.ex index 0e7323f..3637cdf 100644 --- a/lib/camp_api_web/controllers/grist_controller.ex +++ b/lib/camp_api_web/controllers/grist_controller.ex @@ -3,6 +3,7 @@ defmodule CampApiWeb.GristController do alias CampApi.Grist alias CampApi.Grist.Gauge + alias CampApi.Grist.Fundraising action_fallback CampApiWeb.FallbackController @@ -11,4 +12,10 @@ defmodule CampApiWeb.GristController do render(conn, :gauge, gauge: gauge) end + + def fundraising(conn, _params) do + fundraising = Fundraising.get() + + render(conn, :fundraising, fundraising: fundraising) + end end diff --git a/lib/camp_api_web/controllers/grist_json.ex b/lib/camp_api_web/controllers/grist_json.ex index 746a4f3..d87143f 100644 --- a/lib/camp_api_web/controllers/grist_json.ex +++ b/lib/camp_api_web/controllers/grist_json.ex @@ -4,4 +4,13 @@ defmodule CampApiWeb.GristJSON do def gauge(%{gauge: gauge}) do %{gauge: gauge} end + + def fundraising(%{fundraising: fundraising}) do + total = + fundraising + |> Enum.map(fn record -> get_in(record, ["fields", "Montant"]) end) + |> Enum.sum() + + %{total: total} + end end diff --git a/lib/camp_api_web/router.ex b/lib/camp_api_web/router.ex index bb1804e..d2f0653 100644 --- a/lib/camp_api_web/router.ex +++ b/lib/camp_api_web/router.ex @@ -9,6 +9,8 @@ defmodule CampApiWeb.Router do pipe_through :api get "/gauge", GristController, :gauge + + get "/fundraising", GristController, :fundraising end # Enable LiveDashboard in development