debianize-mobilizon/lib/graphql/resolvers/config.ex

50 lines
1.3 KiB
Elixir
Raw Normal View History

2020-01-26 20:34:25 +01:00
defmodule Mobilizon.GraphQL.Resolvers.Config do
2019-03-22 10:53:38 +01:00
@moduledoc """
2019-09-08 00:05:54 +02:00
Handles the config-related GraphQL calls.
2019-03-22 10:53:38 +01:00
"""
alias Geolix.Adapter.MMDB2.Record.{Country, Location}
2019-03-22 10:53:38 +01:00
2020-01-22 02:14:42 +01:00
alias Mobilizon.Config
2019-03-22 10:53:38 +01:00
@doc """
2019-09-08 00:05:54 +02:00
Gets config.
2019-03-22 10:53:38 +01:00
"""
2020-01-26 20:34:25 +01:00
def get_config(_parent, _params, %{context: %{ip: ip}}) do
geolix = Geolix.lookup(ip)
country_code =
case Map.get(geolix, :city) do
%{country: %Country{iso_code: country_code}} -> String.downcase(country_code)
_ -> nil
end
location =
case Map.get(geolix, :city) do
%{location: %Location{} = location} -> Map.from_struct(location)
_ -> nil
end
{:ok,
%{
2019-09-08 00:05:54 +02:00
name: Config.instance_name(),
registrations_open: Config.instance_registrations_open?(),
registrations_whitelist: Config.instance_registrations_whitelist?(),
demo_mode: Config.instance_demo_mode?(),
description: Config.instance_description(),
location: location,
country_code: country_code,
geocoding: %{
provider: Config.instance_geocoding_provider(),
autocomplete: Config.instance_geocoding_autocomplete()
},
maps: %{
tiles: %{
endpoint: Config.instance_maps_tiles_endpoint(),
attribution: Config.instance_maps_tiles_attribution()
}
}
}}
2019-03-22 10:53:38 +01:00
end
end