From eaffbf8780e370ecec4e9bbc534694b8a815a86a Mon Sep 17 00:00:00 2001 From: Shulhan Date: Sat, 27 Mar 2021 21:57:57 +0700 Subject: 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. --- example/example.go | 70 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 10 deletions(-) (limited to 'example/example.go') 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) { -- cgit v1.3