38 lines
865 B
Go
38 lines
865 B
Go
package http
|
|
|
|
import "net/http"
|
|
import "net/url"
|
|
import "html/template"
|
|
import "git.tebibyte.media/sashakoshka/step"
|
|
|
|
var _ step.FuncProvider = new(Provider)
|
|
|
|
// Provider provides HTTP and URL functions.
|
|
type Provider struct {
|
|
|
|
}
|
|
|
|
// FuncMap fulfills the step.FuncProvider interface.
|
|
func (this *Provider) FuncMap () template.FuncMap {
|
|
return template.FuncMap {
|
|
"parseQuery": funcParseQuery,
|
|
"parseForm": funcParseForm,
|
|
}
|
|
}
|
|
|
|
func funcParseQuery (query string) url.Values {
|
|
// wrapped here because the query might contain all sorts of nonsense,
|
|
// and returning an error in a template function causes everything to
|
|
// stop rather ungracefully
|
|
values, err := url.ParseQuery(query)
|
|
if err != nil { return nil }
|
|
return values
|
|
}
|
|
|
|
|
|
func funcParseForm (req *http.Request) url.Values {
|
|
err := req.ParseForm()
|
|
if err != nil { return nil }
|
|
return req.Form
|
|
}
|