lower timeout
parent
db23e9152a
commit
9a0ef6da85
34
main.go
34
main.go
|
|
@ -11,11 +11,12 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"gitlab-app.eng.qops.net/golang/jwt"
|
"gitlab-app.eng.qops.net/data-store/jwt"
|
||||||
)
|
)
|
||||||
|
|
||||||
type LagReader struct {
|
type LagReader struct {
|
||||||
|
|
@ -32,13 +33,14 @@ func main() {
|
||||||
}
|
}
|
||||||
|
|
||||||
var bodyRepeat, n int
|
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 ca, cert, key, secret string
|
||||||
var needJWT, verbose, jsonPP, quiet, responseHeaders bool
|
var needJWT, verbose, jsonPP, quiet, responseHeaders bool
|
||||||
var timeout, lag time.Duration
|
var timeout, lag time.Duration
|
||||||
|
|
||||||
func Main() error {
|
func Main() error {
|
||||||
flag.StringVar(&method, "method", "get", "method for request")
|
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(&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")
|
||||||
flag.StringVar(&body, "body", "", "body 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(&basicAuth, "auth", "", "comma separated user,password for basic auth")
|
||||||
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.StringVar(&audience, "audience", "qualtrics", "aud 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(&jsonPP, "jpp", true, "try json pretty print")
|
||||||
flag.BoolVar(&verbose, "v", false, "is verbose")
|
flag.BoolVar(&verbose, "v", false, "is verbose")
|
||||||
|
|
@ -88,7 +91,6 @@ func do() error {
|
||||||
} 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, "/"),
|
||||||
|
|
@ -97,18 +99,31 @@ func do() error {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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")
|
req.Header.Set("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, "=")
|
||||||
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") == "" {
|
if req.Header.Get("brandId") == "" {
|
||||||
req.Header.Set("brandId", brandID)
|
req.Header.Set("brandId", brandID)
|
||||||
}
|
}
|
||||||
if needJWT {
|
if needJWT {
|
||||||
setJWT(verbose, req, brandID, userID, issuer, secret, claims)
|
setJWT(verbose, req, brandID, userID, issuer, secret, claims, kid, audience)
|
||||||
}
|
}
|
||||||
if basicAuth != "" {
|
if basicAuth != "" {
|
||||||
splits := strings.Split(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{
|
signer := &jwt.Signer{
|
||||||
Timeout: time.Hour,
|
Timeout: time.Minute * 5,
|
||||||
Key: []byte(secret),
|
Key: []byte(secret),
|
||||||
|
DefaultHeaders: jwt.Headers{
|
||||||
|
KeyID: kid,
|
||||||
|
},
|
||||||
DefaultClaims: jwt.Claims{
|
DefaultClaims: jwt.Claims{
|
||||||
Audience: "qualtrics",
|
Audience: audience,
|
||||||
Issuer: issuer,
|
Issuer: issuer,
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
BrandID: brandID,
|
BrandID: brandID,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue