lib/exvcr/util.ex

defmodule ExVCR.Util do
  @moduledoc """
  Provides utility functions.
  """

  @doc """
  Returns uniq_id string based on current timestamp (ex. 1407237617115869)
  """
  def uniq_id do
    :os.timestamp() |> Tuple.to_list |> Enum.join("")
  end

  @doc """
  Takes a keyword lists and returns them as strings.
  """

  def stringify_keys(list) do
    list |> Enum.map(fn {key, value} -> {to_string(key), to_string(value)} end)
  end

  def build_url(scheme, host, path, port \\ nil, query \\ nil) do
    scheme = case scheme do
      s when s in [:http, "http", "HTTP"] -> "http://"
      s when s in [:https, "https", "HTTPS"] -> "https://"
      _ -> scheme
    end

    port = cond do
      scheme == "http://" && port == 80 -> nil
      scheme == "https://" && port == 443 -> nil
      true -> port
    end

    url = if port do
      "#{scheme}#{host}:#{port}#{path}"
    else
      "#{scheme}#{host}#{path}"
    end

    url = if query != nil && query != "" do
      "#{url}?#{query}"
    else
      url
    end

    url
  end
end