From c69bbc7ce1af2dc295fc17fcb31485e2d4caafa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Dimitrov?= Date: Wed, 7 Feb 2018 16:08:32 +0100 Subject: stdlib: Improve URI normalization in uri_string - normalize/1 accepts uri_map() as input type and can return error() if URI parsing fails. - Added normalize/2 that can return a normalized uri_map(). Change-Id: Icdd2e60c15019d3eec2e7bc994cae03066a79194 --- lib/stdlib/doc/src/uri_string.xml | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'lib/stdlib/doc/src/uri_string.xml') diff --git a/lib/stdlib/doc/src/uri_string.xml b/lib/stdlib/doc/src/uri_string.xml index 21f470e763..6b52ffdd4d 100644 --- a/lib/stdlib/doc/src/uri_string.xml +++ b/lib/stdlib/doc/src/uri_string.xml @@ -4,7 +4,7 @@
- 20172017 + 20172018 Ericsson AB. All Rights Reserved. @@ -24,7 +24,7 @@ uri_string Péter Dimitrov 1 - 2017-10-24 + 2018-02-07 A
uri_string @@ -70,7 +70,8 @@ transcode/2 Transforming URIs into a normalized form

- normalize/1 + normalize/1

+ normalize/2
Composing form-urlencoded query strings from a list of key-value pairs

compose_query/1

@@ -233,7 +234,7 @@ Syntax-based normalization. -

Transforms URIString into a normalized form +

Transforms an URI into a normalized form using Syntax-Based Normalization as defined by RFC 3986.

This function implements case normalization, percent-encoding @@ -247,6 +248,33 @@ >]]> 3> uri_string:normalize("http://localhost:80"). "https://localhost/" +4> uri_string:normalize(#{scheme => "http",port => 80,path => "/a/b/c/./../../g", +4> host => "localhost-örebro"}). +"http://localhost-%C3%B6rebro/a/g" + + + + + + + Syntax-based normalization. + +

Same as normalize/1 but with an additional + Options parameter, that controls if the normalized URI + shall be returned as an uri_map(). + There is one supported option: return_map. +

+

Example:

+
+1> uri_string:normalize("/a/b/c/./../../g", [return_map]).
+#{path => "/a/g"}
+2> >, [return_map]).]]>
+ <<"mid/6">>}]]>
+3> uri_string:normalize("http://localhost:80", [return_map]).
+#{scheme => "http",path => "/",host => "localhost"}
+4> uri_string:normalize(#{scheme => "http",port => 80,path => "/a/b/c/./../../g",
+4> host => "localhost-örebro"}, [return_map]).
+#{scheme => "http",path => "/a/g",host => "localhost-örebro"}
 	
-- cgit v1.2.3