From 9a0ef6da853b3e4af610f1ebbdc03b40f8ae1442 Mon Sep 17 00:00:00 2001 From: Bel LaPointe Date: Thu, 29 Sep 2022 14:59:52 -0600 Subject: [PATCH] lower timeout --- main.go | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index cb26a9d..e96e154 100755 --- a/main.go +++ b/main.go @@ -11,11 +11,12 @@ import ( "io/ioutil" "log" "net/http" + "net/url" "os" "strings" "time" - "gitlab-app.eng.qops.net/golang/jwt" + "gitlab-app.eng.qops.net/data-store/jwt" ) type LagReader struct { @@ -32,13 +33,14 @@ func main() { } var bodyRepeat, n int -var path, host, method, body, headers, brandID, userID, issuer, basicAuth, claims string +var path, host, method, body, headers, brandID, userID, issuer, audience, basicAuth, claims, kid string var ca, cert, key, secret string var needJWT, verbose, jsonPP, quiet, responseHeaders bool var timeout, lag time.Duration func Main() error { flag.StringVar(&method, "method", "get", "method for request") + flag.StringVar(&kid, "kid", "prod/rems-api", "kid 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") @@ -49,6 +51,7 @@ func Main() error { flag.StringVar(&basicAuth, "auth", "", "comma separated user,password for basic auth") 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(&audience, "audience", "qualtrics", "aud 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") @@ -88,7 +91,6 @@ func do() error { } else { reqBody = os.Stdin } - reqBody = NewLagReader(lag, reqBody) req, err := http.NewRequest( strings.ToUpper(method), host+"/"+strings.Trim(path, "/"), @@ -97,18 +99,31 @@ func do() error { if err != nil { return err } + if lag != 0 { + req.Body = io.NopCloser(NewLagReader(lag, req.Body)) + } else { + b, _ := ioutil.ReadAll(req.Body) + req.Body = io.NopCloser(bytes.NewReader(b)) + req.ContentLength = int64(len(b)) + } req.Header.Set("Content-Type", "application/json") if len(headers) > 0 { for _, pair := range strings.Split(headers, ",") { kv := strings.Split(pair, "=") - req.Header.Add(kv[0], strings.Join(kv[1:], "=")) + k := kv[0] + v := strings.Join(kv[1:], "=") + vd, err := url.QueryUnescape(v) + if err != nil { + panic(err) + } + req.Header.Add(k, vd) } } if req.Header.Get("brandId") == "" { req.Header.Set("brandId", brandID) } if needJWT { - setJWT(verbose, req, brandID, userID, issuer, secret, claims) + setJWT(verbose, req, brandID, userID, issuer, secret, claims, kid, audience) } if basicAuth != "" { splits := strings.Split(basicAuth, ",") @@ -191,12 +206,15 @@ 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) { +func setJWT(verbose bool, r *http.Request, brandID, userID string, issuer, secret, claims, kid, audience string) { signer := &jwt.Signer{ - Timeout: time.Hour, + Timeout: time.Minute * 5, Key: []byte(secret), + DefaultHeaders: jwt.Headers{ + KeyID: kid, + }, DefaultClaims: jwt.Claims{ - Audience: "qualtrics", + Audience: audience, Issuer: issuer, UserID: userID, BrandID: brandID,