LoginSignup
2
2

More than 5 years have passed since last update.

ElixirでURLが有効なのかを判別する方法

Posted at

ElixirでURLが有効なのかを判別する方法

URIパッケージを使うと便利です。

iex(5)> URI.parse("https://account.idcfcloud.com/auth/login?service=https%3A%2F%2Fconsole.idcfcloud.com%2F%3Fcl%3Drn_lgin")
%URI{authority: "account.idcfcloud.com", fragment: nil,
 host: "account.idcfcloud.com", path: "/auth/login", port: 443,
 query: "service=https%3A%2F%2Fconsole.idcfcloud.com%2F%3Fcl%3Drn_lgin",
 scheme: "https", userinfo: nil}

要するにhostの部分はnilであるかをチェックするといいです。

defmodule Validation do
  def validate_uri(str) do
    uri = URI.parse(str)
    case uri do
      %URI{host: nil} -> {:error, uri}
      uri -> {:ok, uri}
    end
  end
end
iex(1)> Validation.validate_uri("abc")
{:error,
 %URI{authority: nil, fragment: nil, host: nil, path: "abc", port: nil,
  query: nil, scheme: nil, userinfo: nil}}
iex(2)> Validation.validate_uri("http://google.com")
{:ok,
 %URI{authority: "google.com", fragment: nil, host: "google.com", path: nil,
  port: 80, query: nil, scheme: "http", userinfo: nil}}
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2