summaryrefslogtreecommitdiff
path: root/example/example.go
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2021-03-27 21:57:57 +0700
committerShulhan <ms@kilabit.info>2021-03-27 21:57:57 +0700
commiteaffbf8780e370ecec4e9bbc534694b8a815a86a (patch)
tree53d5f36d7059fdcf58824ab36cad103dc0d2fd08 /example/example.go
parenta098c7d1641299e14ddfa88800922c128feff2d0 (diff)
downloadgorankusu-eaffbf8780e370ecec4e9bbc534694b8a815a86a.tar.xz
all: change the Run result to return dump of HTTP request and response
Previously, we display the actual response of the HTTP target only on the user interface. This changes make the Run function to display the actual HTTP request and response that being send and received on HTTP target.
Diffstat (limited to 'example/example.go')
-rw-r--r--example/example.go70
1 files changed, 60 insertions, 10 deletions
diff --git a/example/example.go b/example/example.go
index ba2dada..cbdb840 100644
--- a/example/example.go
+++ b/example/example.go
@@ -233,18 +233,43 @@ func (ex *Example) pathExamplePostForm(epr *libhttp.EndpointRequest) ([]byte, er
return json.Marshal(&res)
}
-func (ex *Example) runExampleGet(req *trunks.RunRequest) ([]byte, error) {
+func (ex *Example) runExampleGet(req *trunks.RunRequest) (res *trunks.RunResponse, err error) {
if req.Target.HttpClient == nil {
req.Target.HttpClient = libhttp.NewClient(req.Target.BaseUrl, nil, true)
}
- _, resbody, err := req.Target.HttpClient.Get(
+
+ res = &trunks.RunResponse{}
+
+ headers := req.HttpTarget.Headers.ToHttpHeader()
+ params := req.HttpTarget.Params.ToUrlValues()
+
+ httpRequest, err := req.Target.HttpClient.GenerateHttpRequest(
+ req.HttpTarget.Method,
req.HttpTarget.Path,
- req.HttpTarget.Headers.ToHttpHeader(),
- req.HttpTarget.Params.ToUrlValues())
+ req.HttpTarget.RequestType,
+ headers,
+ params,
+ )
+ if err != nil {
+ return nil, err
+ }
+
+ err = res.SetHttpRequest(httpRequest)
+ if err != nil {
+ return nil, err
+ }
+
+ httpResponse, _, err := req.Target.HttpClient.Do(httpRequest)
+ if err != nil {
+ return nil, err
+ }
+
+ err = res.SetHttpResponse(httpResponse)
if err != nil {
return nil, err
}
- return resbody, nil
+
+ return res, nil
}
func (ex *Example) preattackExampleGet(rr *trunks.RunRequest) {
@@ -271,18 +296,43 @@ func (ex *Example) attackExampleGet(rr *trunks.RunRequest) vegeta.Targeter {
}
}
-func (ex *Example) runExamplePostForm(req *trunks.RunRequest) ([]byte, error) {
+func (ex *Example) runExamplePostForm(req *trunks.RunRequest) (res *trunks.RunResponse, err error) {
if req.Target.HttpClient == nil {
req.Target.HttpClient = libhttp.NewClient(req.Target.BaseUrl, nil, true)
}
- _, resbody, err := req.Target.HttpClient.PostForm(
+
+ res = &trunks.RunResponse{}
+
+ headers := req.HttpTarget.Headers.ToHttpHeader()
+ params := req.HttpTarget.Params.ToUrlValues()
+
+ httpRequest, err := req.Target.HttpClient.GenerateHttpRequest(
+ req.HttpTarget.Method,
req.HttpTarget.Path,
- req.HttpTarget.Headers.ToHttpHeader(),
- req.HttpTarget.Params.ToUrlValues())
+ req.HttpTarget.RequestType,
+ headers,
+ params,
+ )
+ if err != nil {
+ return nil, err
+ }
+
+ err = res.SetHttpRequest(httpRequest)
+ if err != nil {
+ return nil, err
+ }
+
+ httpResponse, _, err := req.Target.HttpClient.Do(httpRequest)
+ if err != nil {
+ return nil, err
+ }
+
+ err = res.SetHttpResponse(httpResponse)
if err != nil {
return nil, err
}
- return resbody, nil
+
+ return res, nil
}
func (ex *Example) preattackExamplePostForm(rr *trunks.RunRequest) {