1package main 2 3import ( 4 "bufio" 5 "crypto/tls" 6 "fmt" 7 "io" 8 "net/http" 9 "regexp" 10 "time" 11) 12 13func validURL(url string) bool { 14 r := regexp.MustCompile("(?i)^http(?:s)?://") 15 return r.MatchString(url) 16} 17 18func getURL(url string, insecure bool) (io.Reader, error) { 19 tr := &http.Transport{ 20 TLSClientConfig: &tls.Config{InsecureSkipVerify: insecure}, 21 } 22 client := http.Client{ 23 Transport: tr, 24 Timeout: 20 * time.Second, 25 } 26 27 req, err := http.NewRequest("GET", url, nil) 28 if err != nil { 29 return nil, err 30 } 31 req.Header.Set("User-Agent", fmt.Sprintf("gron/%s", gronVersion)) 32 req.Header.Set("Accept", "application/json") 33 34 resp, err := client.Do(req) 35 36 if err != nil { 37 return nil, err 38 } 39 40 return bufio.NewReader(resp.Body), err 41} 42