add .i
parent
ca9c1b5f7c
commit
db23e9152a
51
main.go
51
main.go
|
|
@ -31,17 +31,19 @@ func main() {
|
|||
}
|
||||
}
|
||||
|
||||
var bodyRepeat, n int
|
||||
var path, host, method, body, headers, brandID, userID, issuer, basicAuth, claims string
|
||||
var ca, cert, key, secret string
|
||||
var needJWT, verbose, jsonPP, quiet, responseHeaders bool
|
||||
var timeout, lag time.Duration
|
||||
|
||||
func Main() error {
|
||||
var bodyRepeat int
|
||||
var path, host, method, body, headers, brandID, userID, issuer, basicAuth, claims string
|
||||
var ca, cert, key, secret string
|
||||
var needJWT, verbose, jsonPP, quiet 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")
|
||||
flag.StringVar(&body, "body", "", "body for request")
|
||||
flag.IntVar(&bodyRepeat, "bodyrepeat", 1, "repeat body for request")
|
||||
flag.IntVar(&n, "n", 1, "how many times to execute")
|
||||
flag.StringVar(&brandID, "brand", "testencresponse", "brandID for request JWT")
|
||||
flag.StringVar(&userID, "user", "breel", "userid for request JWT")
|
||||
flag.StringVar(&basicAuth, "auth", "", "comma separated user,password for basic auth")
|
||||
|
|
@ -50,6 +52,7 @@ func Main() error {
|
|||
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(&responseHeaders, "i", false, "print response headers")
|
||||
flag.BoolVar(&quiet, "q", false, "is quiet")
|
||||
flag.DurationVar(&timeout, "t", time.Second*10, "request timeout")
|
||||
flag.DurationVar(&lag, "lag", time.Second*0, "writing request lag after connecting")
|
||||
|
|
@ -69,6 +72,15 @@ func Main() error {
|
|||
host = "http://" + host
|
||||
}
|
||||
|
||||
for i := 0; i < n; i++ {
|
||||
if err := do(); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func do() error {
|
||||
c := makeClient(timeout, ca, cert, key)
|
||||
var reqBody io.Reader
|
||||
if bodyRepeat >= 1 {
|
||||
|
|
@ -85,14 +97,16 @@ func Main() error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
req.Header.Set("brandId", brandID)
|
||||
req.Header.Set("Content-Type", "application/json")
|
||||
if len(headers) > 0 {
|
||||
for _, pair := range strings.Split(headers, ",") {
|
||||
kv := strings.Split(pair, "=")
|
||||
req.Header.Set(kv[0], kv[1])
|
||||
req.Header.Add(kv[0], strings.Join(kv[1:], "="))
|
||||
}
|
||||
}
|
||||
if req.Header.Get("brandId") == "" {
|
||||
req.Header.Set("brandId", brandID)
|
||||
}
|
||||
if needJWT {
|
||||
setJWT(verbose, req, brandID, userID, issuer, secret, claims)
|
||||
}
|
||||
|
|
@ -105,7 +119,10 @@ func Main() error {
|
|||
}
|
||||
|
||||
if verbose {
|
||||
fmt.Fprintf(os.Stderr, "%v\n", req)
|
||||
fmt.Fprintf(os.Stderr, "%+v\n", req)
|
||||
for k, v := range req.Header {
|
||||
fmt.Fprintf(os.Stderr, "\t[%s] = (%d) %+v\n", k, len(v), v)
|
||||
}
|
||||
}
|
||||
start := time.Now()
|
||||
resp, err := c.Do(req)
|
||||
|
|
@ -113,9 +130,6 @@ func Main() error {
|
|||
if err != nil {
|
||||
return fmt.Errorf("DO failed: %v", err)
|
||||
}
|
||||
if verbose {
|
||||
fmt.Fprintf(os.Stderr, "%v\n", resp.Header)
|
||||
}
|
||||
b, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
return fmt.Errorf("READ BODY failed: %v", err)
|
||||
|
|
@ -123,6 +137,16 @@ func Main() error {
|
|||
defer resp.Body.Close()
|
||||
|
||||
fmt.Fprintf(os.Stderr, "(%d / %v) ", resp.StatusCode, elapsed)
|
||||
if responseHeaders || verbose {
|
||||
f := os.Stdout
|
||||
if verbose {
|
||||
f = os.Stderr
|
||||
}
|
||||
fmt.Fprintf(f, "\n")
|
||||
for k := range resp.Header {
|
||||
fmt.Fprintf(f, "%s: %s\n", k, resp.Header.Get(k))
|
||||
}
|
||||
}
|
||||
if jsonPP {
|
||||
var v interface{}
|
||||
if err := json.Unmarshal(b, &v); err == nil {
|
||||
|
|
@ -169,7 +193,8 @@ func makeClient(timeout time.Duration, ca, cert, key string) *http.Client {
|
|||
|
||||
func setJWT(verbose bool, r *http.Request, brandID, userID string, issuer, secret, claims string) {
|
||||
signer := &jwt.Signer{
|
||||
Key: []byte(secret),
|
||||
Timeout: time.Hour,
|
||||
Key: []byte(secret),
|
||||
DefaultClaims: jwt.Claims{
|
||||
Audience: "qualtrics",
|
||||
Issuer: issuer,
|
||||
|
|
@ -195,7 +220,7 @@ func setJWT(verbose bool, r *http.Request, brandID, userID string, issuer, secre
|
|||
}
|
||||
|
||||
if verbose {
|
||||
log.Println(*signer)
|
||||
log.Printf("%+v", *signer)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue