From: Ant Zucaro Date: Sun, 29 Nov 2015 15:07:55 +0000 (-0500) Subject: Clean up xs_submit. X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=03f4b15a4c6e19545e5e4bd0b740c8a6ba8c5cd8;p=xonotic%2Fxonstat.git Clean up xs_submit. This was written when I didn't really know that much Golang. I know a little bit more about it now, so I can at least format accordingly! Also I know how to use a Scanner now. Shame on my past self... --- diff --git a/xonstat/util/xs_submit.go b/xonstat/util/xs_submit.go index 652eb85..1b96254 100644 --- a/xonstat/util/xs_submit.go +++ b/xonstat/util/xs_submit.go @@ -1,32 +1,54 @@ package main -import "bytes" -import "flag" -import "fmt" -import "io/ioutil" -import "net/http" -import "os" +import ( + "bufio" + "bytes" + "flag" + "fmt" + "io/ioutil" + "net/http" + "os" +) /* xs_submit takes a file containing a single XonStat request and submits it to the server URL specified */ func main() { - var fn = flag.String("file", "xonstat.log", "Logfile from XonStat") - var url = flag.String("url", "http://localhost:6543/stats/submit", "XonStat submission URL") - flag.Parse() + fn := flag.String("file", "xonstat.log", "Logfile from XonStat") + url := flag.String("url", "http://localhost:6543/stats/submit", "XonStat submission URL") + out := flag.Bool("out", false, "logs the response body to .out") + flag.Parse() - body, err := ioutil.ReadFile(*fn) - if err != nil { - fmt.Printf("Issue opening file %s\n", *fn) - os.Exit(1) - } - contentlength := int64(len(body)) + body, err := ioutil.ReadFile(*fn) + if err != nil { + fmt.Printf("Issue opening file %s\n", *fn) + os.Exit(1) + } + contentlength := int64(len(body)) - r := bytes.NewReader(body) + r := bytes.NewReader(body) - req, _ := http.NewRequest("POST", *url, r) - req.ContentLength = contentlength - res, _ := http.DefaultClient.Do(req) - defer res.Body.Close() + req, _ := http.NewRequest("POST", *url, r) + req.ContentLength = contentlength + res, _ := http.DefaultClient.Do(req) + defer res.Body.Close() - fmt.Printf("%s: %s\n", *fn, res.Status) + fmt.Printf("%s: %s\n", *fn, res.Status) + + if *out { + // open the output file for the response + of, err := os.Create(*fn + ".out") + if err != nil { + fmt.Printf("Issue creating file %s.out\n", *fn) + os.Exit(1) + } + defer of.Close() + + bo := bufio.NewWriter(of) + defer bo.Flush() + + scanner := bufio.NewScanner(res.Body) + for scanner.Scan() { + fmt.Fprintln(bo, scanner.Text()) + } + } }