RFC3986 URI parser
Elixir
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
config
lib
priv
test
.gitignore
.travis.yml
LICENSE
README.md
mix.exs
mix.lock

README.md

Build Status RFC3986

An URI parser trying to be strictly compatible with RFC3986.

This project uses ex_abnf with the official uri grammar

Example

iex> RFC3986.init # Call this one first to initialize the grammar.
iex> {_matched_uri, _not_matched_input, result} = RFC3986.parse 'http://user:pass@elixir-lang.org:8812/docs/stable/elixir/Enum.html?k1%2A=v1&k2=v2#fragment'
iex> result
%RFC3986.Result{
    fragment: 'fragment',
    host: 'elixir-lang.org',
    host_type: :reg_name,
    password: 'pass',
    port: 8812,
    query: 'k1%2A=v1&k2=v2',
    query_string: %{'k1%2A' => 'v1', 'k2' => 'v2'},
    scheme: 'http',
    segments: ['docs', 'stable', 'elixir', 'Enum.html'],
    type: :authority,
    userinfo: 'user:pass',
    username: 'user'
  }

Using it with Mix

To use it in your Mix projects, first add it as a dependency:

def deps do
  [{:ex_rfc3986, "~> 0.2.7"}]
end

Then run mix deps.get to install it.

License

The source code is released under Apache 2 License.

Check LICENSE file for more information.