lower timeout

master
Bel LaPointe 2022-09-29 14:59:52 -06:00
parent db23e9152a
commit 9a0ef6da85
1 changed files with 26 additions and 8 deletions

34
main.go
View File

@ -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,