diff options
| -rw-r--r-- | client.go | 23 | ||||
| -rw-r--r-- | punycode.go | 28 |
2 files changed, 23 insertions, 28 deletions
@@ -7,6 +7,9 @@ import ( "net" "net/url" "time" + "unicode/utf8" + + "golang.org/x/net/idna" ) // A Client is a Gemini client. Its zero value is a usable client. @@ -202,3 +205,23 @@ func splitHostPort(hostport string) (host, port string) { } return } + +func isASCII(s string) bool { + for i := 0; i < len(s); i++ { + if s[i] >= utf8.RuneSelf { + return false + } + } + return true +} + +// punycodeHostname returns the punycoded version of hostname. +func punycodeHostname(hostname string) (string, error) { + if net.ParseIP(hostname) != nil { + return hostname, nil + } + if isASCII(hostname) { + return hostname, nil + } + return idna.Lookup.ToASCII(hostname) +} diff --git a/punycode.go b/punycode.go deleted file mode 100644 index 58f84e5..0000000 --- a/punycode.go +++ /dev/null @@ -1,28 +0,0 @@ -package gemini - -import ( - "net" - "unicode/utf8" - - "golang.org/x/net/idna" -) - -func isASCII(s string) bool { - for i := 0; i < len(s); i++ { - if s[i] >= utf8.RuneSelf { - return false - } - } - return true -} - -// punycodeHostname returns the punycoded version of hostname. -func punycodeHostname(hostname string) (string, error) { - if net.ParseIP(hostname) != nil { - return hostname, nil - } - if isASCII(hostname) { - return hostname, nil - } - return idna.Lookup.ToASCII(hostname) -} |