Hi,
I had a problem when parsing URL which mixture of UTF-8 encoded and reserved URI charactors.
Version
dart: 2.5.0
uri: 0.11.3+1
Example
username: サンプル@example.com
var uri = Uri.parse("https://example.com/users/サンプル@example.com");
print("uri: $uri");
// uri: https://example.com/users/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB@example.com
// Encoded like this automatically
var template = UriTemplate("/users/{+username}");
var parser = UriParser(template);
var params = parser.parse(uri);
print("params: $params");
// ParseException: /users/{+username} does not match https://example.com/users/%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB@example.com
// expect: {username: %E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB@example.com}
I think this caused by regexp in _Compiler._compilePath method does not include % character.
For this reason, template expansion/parsing with + operator seems to have no reversibility as below.
Hi, I had a problem when parsing URL which mixture of UTF-8 encoded and reserved URI charactors.
Version
Example
username: サンプル@example.com
I think this caused by regexp in
_Compiler._compilePath
method does not include%
character. For this reason, template expansion/parsing with+
operator seems to have no reversibility as below.Additional: Example based on RFC6570 1.2.
Level 2