lib/open_cagex.ex

defmodule OpenCagex do
  alias OpenCagex.{Api, Config, Parser}

  @moduledoc """
  Provides simple and easy to use reverse (lat/long to text) and forward 
  (text to lat/long) geocode via OpenCage Gecoder API

  See: https://geocoder.opencagedata.com/api
  """

  @doc """
  Returns a formatted address for the given coordinates
  """
  def reverse(lat, lng) do
    case Api.get_by_coordinates(lat, lng) do
      {:ok, response} -> Parser.formatted_address(response)
      {:error, error} -> {:error, error}
    end
  end

  @doc """
  Returns a geocode for the given place name
  """
  def geocode(place_name) do
    case Api.get_by_place_name(place_name) do
      {:ok, response} -> Parser.geocode(response)
      {:error, error} -> {:error, error}
    end
  end

  @doc """
  Sets an API key
  """
  def set_api_key(api_key) do
    Config.api_key(api_key)
  end
end