open urls directly when searching for them
This commit is contained in:
parent
d3fc636cd9
commit
e9e6f9b2a8
22
main.go
22
main.go
@ -7,6 +7,8 @@ import (
|
|||||||
"html/template"
|
"html/template"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
"strings"
|
||||||
|
|
||||||
_ "embed"
|
_ "embed"
|
||||||
)
|
)
|
||||||
@ -91,6 +93,22 @@ func icons(w http.ResponseWriter, r *http.Request) {
|
|||||||
func search(w http.ResponseWriter, r *http.Request) {
|
func search(w http.ResponseWriter, r *http.Request) {
|
||||||
r.ParseForm()
|
r.ParseForm()
|
||||||
query := r.Form.Get("query")
|
query := r.Form.Get("query")
|
||||||
w.Header().Add("Location", fmt.Sprintf("https://duckduckgo.com/?q=%s", query))
|
|
||||||
w.WriteHeader(http.StatusMovedPermanently)
|
if uri, err := ParseURI(query); err == nil {
|
||||||
|
// url
|
||||||
|
w.Header().Add("Location", uri.String())
|
||||||
|
w.WriteHeader(http.StatusMovedPermanently)
|
||||||
|
} else {
|
||||||
|
// search string
|
||||||
|
w.Header().Add("Location", fmt.Sprintf("https://duckduckgo.com/?q=%s", query))
|
||||||
|
w.WriteHeader(http.StatusMovedPermanently)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ParseURI(uri string) (*url.URL, error) {
|
||||||
|
if !strings.HasPrefix(uri, "http://") && !strings.HasPrefix(uri, "https://") {
|
||||||
|
uri = "https://" + uri
|
||||||
|
}
|
||||||
|
ret, err := url.ParseRequestURI(uri)
|
||||||
|
return ret, err
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user