package main import ( "fmt" "log" "net/http" "runtime" viper "github.com/spf13/viper" ) var ( appID = "gdq-vod-bot" appName = "Icedream's GamesDoneQuick VoD Bot" appVersion = "dev" redditOwnerUsername = "icedream2k9" ) type config struct { ID string URL string } func setUserAgent(inner http.RoundTripper, userAgent string) http.RoundTripper { return &addUGA{ inner: inner, Agent: userAgent, } } type addUGA struct { inner http.RoundTripper Agent string } func (ug *addUGA) RoundTrip(r *http.Request) (*http.Response, error) { r.Header.Set("User-Agent", ug.Agent) return ug.inner.RoundTrip(r) } func main() { vodID := "agdq2020vods" viper.SetDefault("ID", vodID) viper.SetDefault("URL", "https://www.reddit.com/r/VODThread/wiki/"+vodID+".json") c := new(config) viper.Unmarshal(c) userAgent := fmt.Sprintf( "%s:%s:%s %s (by /u/%s)", runtime.GOOS, appID, appName, appVersion, redditOwnerUsername) redditHTTPClient := &http.Client{ Transport: setUserAgent(http.DefaultTransport, userAgent), } videosJSONResponse, err := redditHTTPClient.Get("") if err != nil { log.Fatal(err) } defer videosJSONResponse.Body.Close() if videosJSONResponse.StatusCode != http.StatusOK { log.Fatal(videosJSONResponse.Status) return } }