Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shhavel/uri_query
URI encode nested GET parameters and array values in Elixir
https://github.com/shhavel/uri_query
Last synced: 4 days ago
JSON representation
URI encode nested GET parameters and array values in Elixir
- Host: GitHub
- URL: https://github.com/shhavel/uri_query
- Owner: shhavel
- License: mit
- Created: 2016-10-05T14:52:47.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-01-20T00:01:58.000Z (10 months ago)
- Last Synced: 2024-09-23T10:18:53.169Z (about 1 month ago)
- Language: Elixir
- Homepage:
- Size: 19.5 KB
- Stars: 13
- Watchers: 1
- Forks: 8
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - URI encode nested GET parameters and array values in Elixir. (HTTP)
- fucking-awesome-elixir - uri_query - URI encode nested GET parameters and array values in Elixir. (HTTP)
- awesome-elixir - uri_query - URI encode nested GET parameters and array values in Elixir. (HTTP)
README
# UriQuery [![Build Status](https://travis-ci.org/shhavel/uri_query.svg?branch=master)](https://travis-ci.org/shhavel/uri_query)
URI encode nested GET parameters and array values.
Prepares URI query parameters to be used in `URI.encode_query/1` or `HTTPoison.get/3`
https://hexdocs.pm/uri_query/0.1.1/UriQuery.html
## Installation
The package can be installed as:
1. Add `uri_query` to your list of dependencies in `mix.exs`:
```elixir
def deps do
[{:uri_query, "~> 0.2.0"}]
end
```2. Ensure `uri_query` is started before your application:
```elixir
def application do
[applications: [:uri_query]]
end
```## Usage
With list values
```elixir
iex> UriQuery.params(foo: ["bar", "quux"]) |> URI.encode_query
"foo%5B0%5D=bar&foo%5B1%5D=quux"iex> UriQuery.params([foo: ["bar", "quux"]], add_indices_to_lists: false) |> URI.encode_query
"foo%5B%5D=bar&foo%5B%5D=quux"iex> HTTPoison.get("http://example.com", [], params: UriQuery.params(foo: ["bar", "quux"]))
```With nested structures (maps or keyword lists)
```elixir
iex> UriQuery.params(%{user: %{name: "Dougal McGuire", email: "[email protected]"}}) |> URI.encode_query
"user%5Bemail%5D=test%40example.com&user%5Bname%5D=Dougal+McGuire"iex> params = %{user: %{name: "Dougal McGuire", email: "[email protected]"}} |> UriQuery.params
[{"user[email]", "[email protected]"}, {"user[name]", "Dougal McGuire"}]
iex> HTTPoison.get("http://example.com", [], params: params)
```NOTE: Empty lists are ignored
```elixir
iex> UriQuery.params(foo: []) |> URI.encode_query
""
```