commit bc832de9826230af7b376dd7af9047d5b4a1f439 Author: Bel LaPointe Date: Wed Jan 2 15:19:21 2019 -0700 long time coming diff --git a/main.go b/main.go new file mode 100644 index 0000000..228777e --- /dev/null +++ b/main.go @@ -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) + } +}