pretty print by default

master
Bel LaPointe 2019-04-09 08:26:28 -06:00
parent f782ff175c
commit 07502502ef
1 changed files with 35 additions and 2 deletions

37
main.go
View File

@ -4,6 +4,7 @@ import (
"bytes"
"crypto/tls"
"crypto/x509"
"encoding/json"
"flag"
"fmt"
"io"
@ -16,12 +17,17 @@ import (
"gitlab-app.eng.qops.net/golang/jwt"
)
type LagReader struct {
lag time.Duration
src io.Reader
}
func main() {
var bodyRepeat int
var path, host, method, body, headers, brandID, issuer string
var ca, cert, key, secret string
var needJWT, verbose bool
var timeout time.Duration
var needJWT, verbose, jsonPP bool
var timeout, lag time.Duration
flag.StringVar(&method, "method", "get", "method for request")
flag.StringVar(&path, "path", "fieldsetdefinitions/v1/index/surveys/SV_031sm3MMOPSa8Tz/fieldsets?assumeHasPermission=true", "path for request")
flag.StringVar(&host, "host", "data-platform.service.b1-prv.consul:8080", "host and port for request")
@ -31,8 +37,10 @@ func main() {
flag.StringVar(&headers, "headers", "", "headers as k=v,k=v for request")
flag.StringVar(&issuer, "issuer", "dataprocessing,responseengine,fieldset-definitions,qualtrics,objectstore,svs,monolith,ex,blixt,null,responseengine", "issuer for jwt")
flag.BoolVar(&needJWT, "jwt", true, "need jwt boolean")
flag.BoolVar(&jsonPP, "jpp", true, "try json pretty print")
flag.BoolVar(&verbose, "v", false, "is verbose")
flag.DurationVar(&timeout, "t", time.Second*10, "request timeout")
flag.DurationVar(&lag, "lag", time.Second*0, "writing request lag after connecting")
flag.StringVar(&ca, "ca", "", "ca for server")
flag.StringVar(&cert, "cert", "", "cert for client")
flag.StringVar(&key, "key", "", "key for client")
@ -50,6 +58,7 @@ func main() {
} else {
reqBody = os.Stdin
}
reqBody = NewLagReader(lag, reqBody)
req, err := http.NewRequest(
strings.ToUpper(method),
host+"/"+strings.Trim(path, "/"),
@ -58,6 +67,7 @@ func main() {
if err != nil {
panic(err)
}
req.Header.Add("Content-Type", "application/json")
if len(headers) > 0 {
for _, pair := range strings.Split(headers, ",") {
kv := strings.Split(pair, "=")
@ -84,6 +94,14 @@ func main() {
defer resp.Body.Close()
fmt.Fprintf(os.Stderr, "(%d) ", resp.StatusCode)
if jsonPP {
var v interface{}
if err := json.Unmarshal(b, &v); err == nil {
if c, err := json.MarshalIndent(v, "", " "); err == nil {
b = c
}
}
}
fmt.Printf("%s\n", bytes.TrimSpace(b))
}
@ -135,3 +153,18 @@ func setJWT(r *http.Request, brandID string, issuer string, secret string) {
panic(err)
}
}
func NewLagReader(lag time.Duration, src io.Reader) *LagReader {
return &LagReader{
lag: lag,
src: src,
}
}
func (lr *LagReader) Read(p []byte) (n int, err error) {
if lr.lag > 0 {
<-time.After(lr.lag)
lr.lag = 0
}
return lr.src.Read(p)
}