Hi Everyone,

I have repeatedly run into scenarios when building/testing API clients 
where I want to join a path onto a base url. The base_url could be 
configurable (and maybe read from an environment variable) and the user may 
or may not append a trailing slash to it. Here's the problem I'm trying to 
solve:

Base URI: http://example.com/business_1
Path to append: /foo
Desired result: http://example.com/business_1/foo

Base URI: http://example.com/business_1/ # Includes trailing slash
Path to append: /foo
Desired result: http://example.com/business_1/foo

Base URI: http://example.com
Path to append: /foo
Desired result: http://example.com/foo

Base URI: http://example.com/ # Includes trailing slash
Path to append: /foo
Desired result: http://example.com/foo

I don't see a helper to quickly do this and URI.merge/2 replaces the path 
completely. What do you think about `URI.join_path/2`? You should be able 
to do something like this.

iex> URI.join_path("http://example.com/foo/";, "/bar") |> to_string()
"http://example.com/foo/bar";

I guess it would probably leave any query string variables untouched

iex> URI.join_path("http://example.com/foo/?var1=true";, "/bar") |> 
to_string()
"http://example.com/foo/bar?var=1";

And maybe it would allow you to join multiple fragments like Path.join/1:

iex> URI.join_path("http://example.com/foo/";, ["bar", "baz"]) |> to_string()
"http://example.com/foo/bar/baz";

What do you think? Is there a better way to do this that I haven't figured 
out?

Aaron Rener

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/3573e832-c6d5-4154-95b4-b857c3850319n%40googlegroups.com.

Reply via email to