pretty print by default
parent
f782ff175c
commit
07502502ef
37
main.go
37
main.go
|
|
@ -4,6 +4,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
|
"encoding/json"
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
|
@ -16,12 +17,17 @@ import (
|
||||||
"gitlab-app.eng.qops.net/golang/jwt"
|
"gitlab-app.eng.qops.net/golang/jwt"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type LagReader struct {
|
||||||
|
lag time.Duration
|
||||||
|
src io.Reader
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
var bodyRepeat int
|
var bodyRepeat int
|
||||||
var path, host, method, body, headers, brandID, issuer string
|
var path, host, method, body, headers, brandID, issuer string
|
||||||
var ca, cert, key, secret string
|
var ca, cert, key, secret string
|
||||||
var needJWT, verbose bool
|
var needJWT, verbose, jsonPP bool
|
||||||
var timeout time.Duration
|
var timeout, lag time.Duration
|
||||||
flag.StringVar(&method, "method", "get", "method for request")
|
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(&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")
|
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(&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.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(&needJWT, "jwt", true, "need jwt boolean")
|
||||||
|
flag.BoolVar(&jsonPP, "jpp", true, "try json pretty print")
|
||||||
flag.BoolVar(&verbose, "v", false, "is verbose")
|
flag.BoolVar(&verbose, "v", false, "is verbose")
|
||||||
flag.DurationVar(&timeout, "t", time.Second*10, "request timeout")
|
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(&ca, "ca", "", "ca for server")
|
||||||
flag.StringVar(&cert, "cert", "", "cert for client")
|
flag.StringVar(&cert, "cert", "", "cert for client")
|
||||||
flag.StringVar(&key, "key", "", "key for client")
|
flag.StringVar(&key, "key", "", "key for client")
|
||||||
|
|
@ -50,6 +58,7 @@ func main() {
|
||||||
} else {
|
} else {
|
||||||
reqBody = os.Stdin
|
reqBody = os.Stdin
|
||||||
}
|
}
|
||||||
|
reqBody = NewLagReader(lag, reqBody)
|
||||||
req, err := http.NewRequest(
|
req, err := http.NewRequest(
|
||||||
strings.ToUpper(method),
|
strings.ToUpper(method),
|
||||||
host+"/"+strings.Trim(path, "/"),
|
host+"/"+strings.Trim(path, "/"),
|
||||||
|
|
@ -58,6 +67,7 @@ func main() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
req.Header.Add("Content-Type", "application/json")
|
||||||
if len(headers) > 0 {
|
if len(headers) > 0 {
|
||||||
for _, pair := range strings.Split(headers, ",") {
|
for _, pair := range strings.Split(headers, ",") {
|
||||||
kv := strings.Split(pair, "=")
|
kv := strings.Split(pair, "=")
|
||||||
|
|
@ -84,6 +94,14 @@ func main() {
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
|
||||||
fmt.Fprintf(os.Stderr, "(%d) ", resp.StatusCode)
|
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))
|
fmt.Printf("%s\n", bytes.TrimSpace(b))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -135,3 +153,18 @@ func setJWT(r *http.Request, brandID string, issuer string, secret string) {
|
||||||
panic(err)
|
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)
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue