IDNA normalization is only performed in NormalizeURLString, but that function returns a string. If you need a url.URL, you must then parse the result of NormalizeURLString, which means you are parsing the URL yet again, which is wasteful.
As NormalizeURLString calls NormalizeURL, the IDNA normalization in the former should be moved to the later, resulting in the URL passed to NormalizeURL having its host field IDNA normalized.
I think you're right, makes sense to me. I don't plan on working on purell in the near future, but happy to assist getting a PR merged that would address this.
IDNA normalization is only performed in
NormalizeURLString
, but that function returns astring
. If you need aurl.URL
, you must then parse the result ofNormalizeURLString
, which means you are parsing the URL yet again, which is wasteful.As
NormalizeURLString
callsNormalizeURL
, the IDNA normalization in the former should be moved to the later, resulting in theURL
passed toNormalizeURL
having its host field IDNA normalized.