Current section
8 Versions
Jump to
Current section
8 Versions
Compare versions
6
files changed
+32
additions
-20
deletions
| @@ -63,5 +63,5 @@ The URL will change every time Ngrok starts, but you can retrieve the URL | |
| 63 63 | by running the following: |
| 64 64 | |
| 65 65 | ```elixir |
| 66 | - Ngrok.Settings.get("public_url") # => http://(.*).ngrok.io/ |
| 66 | + Ngrok.public_url # => http://(.*).ngrok.io/ |
| 67 67 | ``` |
| @@ -15,9 +15,9 @@ | |
| 15 15 | [[{<<"app">>,<<"httpoison">>}, |
| 16 16 | {<<"name">>,<<"httpoison">>}, |
| 17 17 | {<<"optional">>,false}, |
| 18 | - {<<"requirement">>,<<"~> 0.9">>}], |
| 18 | + {<<"requirement">>,<<"~> 0.10">>}], |
| 19 19 | [{<<"app">>,<<"poison">>}, |
| 20 20 | {<<"name">>,<<"poison">>}, |
| 21 21 | {<<"optional">>,false}, |
| 22 22 | {<<"requirement">>,<<"~> 2.0">>}]]}. |
| 23 | - {<<"version">>,<<"0.2.1">>}. |
| 23 | + {<<"version">>,<<"0.3.0">>}. |
| @@ -7,8 +7,8 @@ defmodule Ngrok.Api do | |
| 7 7 | @type successful_parse :: {:ok, map} |
| 8 8 | @type successful_get :: {:ok, String.t} |
| 9 9 | |
| 10 | - @spec first_tunnel_settings() :: error | successful_parse |
| 11 | - def first_tunnel_settings do |
| 10 | + @spec tunnel_settings() :: error | successful_parse |
| 11 | + def tunnel_settings do |
| 12 12 | with api_url = Application.get_env(:ex_ngrok, :api_url), |
| 13 13 | {:ok, body} <- get(api_url), |
| 14 14 | {:ok, parsed} <- parse(body) do |
| @@ -17,4 +17,16 @@ defmodule Ngrok do | |
| 17 17 | opts = [strategy: :rest_for_one, name: Ngrok.Supervisor] |
| 18 18 | Supervisor.start_link(children, opts) |
| 19 19 | end |
| 20 | + |
| 21 | + @doc """ |
| 22 | + Retrieves the public URL of the Ngrok tunnel |
| 23 | + |
| 24 | + ## Example |
| 25 | + |
| 26 | + Ngrok.public_url # => http://(.*).ngrok.io/ |
| 27 | + """ |
| 28 | + @spec public_url :: String.t |
| 29 | + def public_url do |
| 30 | + Ngrok.Settings.get("public_url") |
| 31 | + end |
| 20 32 | end |
| @@ -6,7 +6,7 @@ defmodule Ngrok.Settings do | |
| 6 6 | require Logger |
| 7 7 | |
| 8 8 | def start_link do |
| 9 | - Agent.start_link(fn -> announce_settings end, name: __MODULE__) |
| 9 | + Agent.start_link(fn -> fetch_and_announce_settings end, name: __MODULE__) |
| 10 10 | end |
| 11 11 | |
| 12 12 | @doc """ |
| @@ -25,28 +25,28 @@ defmodule Ngrok.Settings do | |
| 25 25 | Agent.get(__MODULE__, &Map.get(&1, field_name)) |
| 26 26 | end |
| 27 27 | |
| 28 | - @spec announce_settings :: map |
| 29 | - defp announce_settings do |
| 30 | - settings = first_tunnel_settings |
| 31 | - announce(settings) |
| 32 | - settings |
| 28 | + @spec fetch_and_announce_settings :: map |
| 29 | + defp fetch_and_announce_settings do |
| 30 | + tunnel_settings |
| 31 | + |> announce |
| 33 32 | end |
| 34 33 | |
| 35 | - @spec first_tunnel_settings :: map |
| 36 | - defp first_tunnel_settings(), do: first_tunnel_settings(0, "") |
| 37 | - defp first_tunnel_settings(6, error_message), do: raise "Unable to retrieve setting from Ngrok: #{error_message}" |
| 38 | - defp first_tunnel_settings(total_attempts, _) do |
| 34 | + @spec tunnel_settings :: map |
| 35 | + defp tunnel_settings(), do: tunnel_settings(0, "") |
| 36 | + defp tunnel_settings(6, error_message), do: raise "Unable to retrieve setting from Ngrok: #{error_message}" |
| 37 | + defp tunnel_settings(total_attempts, _) do |
| 39 38 | :timer.sleep(total_attempts * 100) |
| 40 | - case Ngrok.Api.first_tunnel_settings do |
| 39 | + case Ngrok.Api.tunnel_settings do |
| 41 40 | {:ok, settings} -> |
| 42 41 | settings |
| 43 42 | {:error, message} -> |
| 44 | - first_tunnel_settings(total_attempts + 1, message) |
| 43 | + tunnel_settings(total_attempts + 1, message) |
| 45 44 | end |
| 46 45 | end |
| 47 46 | |
| 48 | - @spec announce(map) :: :ok |
| 47 | + @spec announce(map) :: map |
| 49 48 | defp announce(settings) do |
| 50 49 | Logger.info "ex_ngrok: Ngrok tunnel available at #{settings["public_url"]}" |
| 50 | + settings |
| 51 51 | end |
| 52 52 | end |
Loading more files…