diff options
| author | adnano <[email protected]> | 2020-09-25 11:27:26 -0400 |
|---|---|---|
| committer | adnano <[email protected]> | 2020-09-25 11:27:26 -0400 |
| commit | ec68ab8609b0096a33e49aa9ba05d8b69b4691b8 (patch) | |
| tree | c28553e19567a02d1c95f5b267e61bad02b4525a /gemini.go | |
| parent | Sort ServeMux entries by length (diff) | |
| download | go-gemini-ec68ab8609b0096a33e49aa9ba05d8b69b4691b8.tar.xz go-gemini-ec68ab8609b0096a33e49aa9ba05d8b69b4691b8.zip | |
Add test
Diffstat (limited to 'gemini.go')
| -rw-r--r-- | gemini.go | 21 |
1 files changed, 8 insertions, 13 deletions
@@ -415,17 +415,15 @@ type ServeMux struct { } type muxEntry struct { - scheme string - host string - path string + u *url.URL handler Handler } func (m *ServeMux) match(url *url.URL) Handler { for _, e := range m.entries { - if (e.scheme == "" || url.Scheme == e.scheme) && - (e.host == "" || url.Host == e.host) && - strings.HasPrefix(url.Path, e.path) { + if (e.u.Scheme == "" || url.Scheme == e.u.Scheme) && + (e.u.Host == "" || url.Host == e.u.Host) && + strings.HasPrefix(url.Path, e.u.Path) { return e.handler } } @@ -439,13 +437,10 @@ func (m *ServeMux) Handle(pattern string, handler Handler) { panic(err) } e := muxEntry{ - url.Scheme, - url.Host, - url.Path, + url, handler, } m.entries = appendSorted(m.entries, e) - log.Print(m.entries) } // HandleFunc registers a HandlerFunc for the given pattern. @@ -490,9 +485,9 @@ func appendSorted(es []muxEntry, e muxEntry) []muxEntry { // return len(es[i].path) < len(e.path) // Condensed version: - return (es[i].scheme == "" || (e.scheme != "" && len(es[i].scheme) < len(e.scheme))) && - (es[i].host == "" || (e.host != "" && len(es[i].host) < len(e.host))) && - len(es[i].path) < len(e.path) + return (es[i].u.Scheme == "" || (e.u.Scheme != "" && len(es[i].u.Scheme) < len(e.u.Scheme))) && + (es[i].u.Host == "" || (e.u.Host != "" && len(es[i].u.Host) < len(e.u.Host))) && + len(es[i].u.Path) < len(e.u.Path) }) if i == n { return append(es, e) |