long time coming

master
Bel LaPointe 2019-01-02 15:19:21 -07:00
commit bc832de982
1 changed files with 78 additions and 0 deletions

78
main.go Normal file
View File

@ -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)
}
}