Commit 8c00a559 authored by Faizal Aziz's avatar Faizal Aziz

adding post form data with proxy

parent 4c6bbdac
...@@ -45,6 +45,7 @@ type ( ...@@ -45,6 +45,7 @@ type (
SetTimeout(timeout time.Duration) SetTimeout(timeout time.Duration)
Post(ctx *context.UlfsaarContext, path string, headers http.Header, payload interface{}) (respHeader http.Header, statusCode int, body []byte, err error) Post(ctx *context.UlfsaarContext, path string, headers http.Header, payload interface{}) (respHeader http.Header, statusCode int, body []byte, err error)
PostFormData(ctx *context.UlfsaarContext, path string, headers http.Header, payload map[string]string) (respHeader http.Header, statusCode int, body []byte, err error) PostFormData(ctx *context.UlfsaarContext, path string, headers http.Header, payload map[string]string) (respHeader http.Header, statusCode int, body []byte, err error)
PostFormDataWithProxy(ctx *context.UlfsaarContext, path, ip, port, username, password string, headers http.Header, payload map[string]string) (respHeader http.Header, statusCode int, body []byte, err error)
PostMultipartFormFilesAndData(ctx *context.UlfsaarContext, path string, headers http.Header, formData []*MultipartField, formFiles []MultipartFileRequest) (respHeader http.Header, statusCode int, body []byte, err error) PostMultipartFormFilesAndData(ctx *context.UlfsaarContext, path string, headers http.Header, formData []*MultipartField, formFiles []MultipartFileRequest) (respHeader http.Header, statusCode int, body []byte, err error)
PostWithProxy(ctx *context.UlfsaarContext, path, ip, port, username, password string, headers http.Header, payload interface{}) (respHeader http.Header, statusCode int, body []byte, err error) PostWithProxy(ctx *context.UlfsaarContext, path, ip, port, username, password string, headers http.Header, payload interface{}) (respHeader http.Header, statusCode int, body []byte, err error)
Put(ctx *context.UlfsaarContext, path string, headers http.Header, payload interface{}) (respHeader http.Header, statusCode int, body []byte, err error) Put(ctx *context.UlfsaarContext, path string, headers http.Header, payload interface{}) (respHeader http.Header, statusCode int, body []byte, err error)
...@@ -271,6 +272,51 @@ func (c *client) PostFormData(ctx *context.UlfsaarContext, path string, headers ...@@ -271,6 +272,51 @@ func (c *client) PostFormData(ctx *context.UlfsaarContext, path string, headers
return respHeader, statusCode, body, httpErr return respHeader, statusCode, body, httpErr
} }
func (c *client) PostFormDataWithProxy(ctx *context.UlfsaarContext, path, ip, port, username, password string, headers http.Header, payload map[string]string) (respHeader http.Header, statusCode int, body []byte, err error) {
searchUrl := c.options.Address + path
startTime := time.Now()
var stringProxUrl string
proxUrl, err := url.Parse(fmt.Sprintf("https://%s:%s@%s:%s", username, password, ip, port))
if err != nil {
stringProxUrl = fmt.Sprintf("https://%s:%s@%s:%s", username, password, ip, port)
} else {
stringProxUrl = proxUrl.String()
}
request := c.httpClient.SetProxy(stringProxUrl).R()
for h, val := range headers {
request.Header[h] = val
}
request.SetFormData(payload)
if headers[ContentType] == nil {
request.Header.Set(ContentType, ApplicationJSON)
}
httpResp, httpErr := request.Post(searchUrl)
if httpResp != nil {
body = httpResp.Body()
respHeader = httpResp.Header()
statusCode = httpResp.StatusCode()
}
ctx.Info("PostFormData",
logger.ToField(urlKey, searchUrl),
logger.ToField(requestKey, toRequest(request.Header, payload)),
logger.ToField(responseKey, toResponse(statusCode, respHeader, body)),
logger.ToField(startProcessingTimeKey, startProcessingTime(startTime)),
logger.ToField(processingTimeKey, processingTime(startTime)),
)
if statusCode == http.StatusOK {
return respHeader, statusCode, body, nil
}
return respHeader, statusCode, body, httpErr
}
func (c *client) PostMultipartFormFilesAndData(ctx *context.UlfsaarContext, path string, headers http.Header, formData []*MultipartField, formFiles []MultipartFileRequest) (respHeader http.Header, statusCode int, body []byte, err error) { func (c *client) PostMultipartFormFilesAndData(ctx *context.UlfsaarContext, path string, headers http.Header, formData []*MultipartField, formFiles []MultipartFileRequest) (respHeader http.Header, statusCode int, body []byte, err error) {
url := c.options.Address + path url := c.options.Address + path
startTime := time.Now() startTime := time.Now()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment