long time coming
commit
bc832de982
|
|
@ -0,0 +1,78 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"gitlab-app.eng.qops.net/golang/jwt"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var path, host, method, body, headers, brandID string
|
||||||
|
var needJWT, verbose bool
|
||||||
|
flag.StringVar(&method, "method", "get", "method for request")
|
||||||
|
flag.StringVar(&path, "path", "fieldsetdefinitions/v1/index/surveys/SV_031sm3MMOPSa8Tz/fieldsets", "path for request")
|
||||||
|
flag.StringVar(&host, "host", "data-platform.service.consul:8080", "host and port for request")
|
||||||
|
flag.StringVar(&body, "body", "", "body for request")
|
||||||
|
flag.StringVar(&brandID, "brand", "testencresponse", "brandID for request JWT")
|
||||||
|
flag.StringVar(&headers, "headers", "", "headers as k=v,k=v for request")
|
||||||
|
flag.BoolVar(&needJWT, "jwt", true, "need jwt boolean")
|
||||||
|
flag.BoolVar(&verbose, "v", false, "is verbose")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
c := &http.Client{}
|
||||||
|
req, err := http.NewRequest(
|
||||||
|
strings.ToUpper(method),
|
||||||
|
"http://"+strings.Trim(host, "/")+"/"+strings.Trim(path, "/"),
|
||||||
|
strings.NewReader(body),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
if len(headers) > 0 {
|
||||||
|
for _, pair := range strings.Split(headers, ",") {
|
||||||
|
kv := strings.Split(pair, "=")
|
||||||
|
req.Header.Add(kv[0], kv[1])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if needJWT {
|
||||||
|
setJWT(req, brandID)
|
||||||
|
}
|
||||||
|
|
||||||
|
if verbose {
|
||||||
|
fmt.Println(req)
|
||||||
|
}
|
||||||
|
resp, err := c.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
b, err := ioutil.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
|
||||||
|
fmt.Printf("(%d) %s\n", resp.StatusCode, bytes.TrimSpace(b))
|
||||||
|
}
|
||||||
|
|
||||||
|
func setJWT(r *http.Request, brandID string) {
|
||||||
|
signer := &jwt.Signer{
|
||||||
|
Key: []byte(os.Getenv("QTOKEN")),
|
||||||
|
DefaultClaims: jwt.Claims{
|
||||||
|
Audience: "qualtrics",
|
||||||
|
Issuer: "dataprocessing,responseengine,fieldset-definitions,qualtrics",
|
||||||
|
UserID: "breel",
|
||||||
|
BrandID: brandID,
|
||||||
|
},
|
||||||
|
IncludeBodyHash: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := signer.Sign(r, jwt.Claims{}); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue