Tinkex.API.URL (Tinkex v0.3.4)
View SourceURL building and query parameter management for Tinkex API requests.
Handles:
- URL construction from base URL and path
- Query parameter normalization and merging
- Query string encoding/decoding
Summary
Functions
Builds a complete URL from base URL, path, and query parameters.
Normalizes query parameters from various input formats into a map.
Functions
Builds a complete URL from base URL, path, and query parameters.
Merges query parameters in priority order (later overrides earlier):
- Default query from config
- Query parameters embedded in the path
- Explicit request query parameters
Examples
iex> build_url("https://api.example.com", "/v1/test", %{}, %{"key" => "value"})
"https://api.example.com/v1/test?key=value"
iex> build_url("https://api.example.com", "/v1/test?existing=1", %{}, %{"new" => "2"})
"https://api.example.com/v1/test?existing=1&new=2"
Normalizes query parameters from various input formats into a map.
Accepts:
- nil (returns empty map)
- Map with string or atom keys
- Keyword list
Filters out nil values and ensures all keys/values are strings.
Examples
iex> normalize_query_params(nil)
%{}
iex> normalize_query_params(%{key: "value", nil_key: nil})
%{"key" => "value"}
iex> normalize_query_params([key: "value", other: 123])
%{"key" => "value", "other" => "123"}