loader/http.go
func NewHTTPTemplateFetcher(urls []string) (*HTTPTemplateFetcher, error) {
	f := &HTTPTemplateFetcher{
		URLs: make([]string, len(urls)),
	}
	for k, v := range urls {
		u, err := url.Parse(v)
		if err != nil {
			return nil, err
		}

		if !u.IsAbs() {
			return nil, fmt.Errorf("url %s is not an absolute url", v)
		}
		f.URLs[k] = u.String()
	}
	return f, nil
}
func NewHTTPTemplateFetcher(urls []string) (*HTTPTemplateFetcher, error) {
	f := &HTTPTemplateFetcher{
		URLs: make([]string, len(urls)),
	}
	for k, v := range urls {
		u, err := url.Parse(v)
		if err != nil {
			return nil, err
		}

		if !u.IsAbs() {
			return nil, fmt.Errorf("url %s is not an absolute url", v)
		}
		f.URLs[k] = u.String()
	}
	return f, nil
}
// NewHTTPTemplateFetcher creates a new struct. `urls` must give us the
// base HTTP urls for us to look the templates in (note: do not use trailing slashes)