lower timeout
parent
db23e9152a
commit
9a0ef6da85
34
main.go
34
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,
|
||||
|
|
|
|||
Loading…
Reference in New Issue