You need to sign in or sign up before continuing.
Commit 0cea26ba authored by Faizal Aziz's avatar Faizal Aziz

adding get with proxy with auth and without and making sure url valid in client

parent 0acac592
......@@ -9,6 +9,7 @@ import (
"gitlab.ursabyte.com/faizal.aziz/ulfssar-go/pkg/context"
"gitlab.ursabyte.com/faizal.aziz/ulfssar-go/pkg/logger"
"net/http"
"net/url"
"time"
)
......@@ -48,7 +49,8 @@ type (
PostMultipartFormFilesAndData(ctx *context.UlfsaarContext, path string, headers http.Header, formData []*MultipartField, formFiles []MultipartFileRequest) (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)
Get(ctx *context.UlfsaarContext, path string, headers http.Header) (respHeader http.Header, statusCode int, body []byte, err error)
GetWithProxy(ctx *context.UlfsaarContext, path, ip, port, username, password string, headers http.Header) (respHeader http.Header, statusCode int, body []byte, err error)
GetWithProxy(ctx *context.UlfsaarContext, path, ip, port string, headers http.Header) (respHeader http.Header, statusCode int, body []byte, err error)
GetWithProxyAuth(ctx *context.UlfsaarContext, path, ip, port, username, password string, headers http.Header) (respHeader http.Header, statusCode int, body []byte, err error)
GetWithQueryParam(ctx *context.UlfsaarContext, path string, headers http.Header, queryParam map[string]string) (respHeader http.Header, statusCode int, body []byte, err error)
Delete(ctx *context.UlfsaarContext, path string, headers http.Header, payload interface{}) (respHeader http.Header, statusCode int, body []byte, err error)
Patch(ctx *context.UlfsaarContext, path string, headers http.Header, payload interface{}) (respHeader http.Header, statusCode int, body []byte, err error)
......@@ -60,18 +62,63 @@ type (
}
)
func (c *client) GetWithProxy(ctx *context.UlfsaarContext, path, ip, port, username, password string, headers http.Header) (respHeader http.Header, statusCode int, body []byte, err error) {
url := c.options.Address + path
func (c *client) GetWithProxy(ctx *context.UlfsaarContext, path, ip, port string, headers http.Header) (respHeader http.Header, statusCode int, body []byte, err error) {
urls := c.options.Address + path
startTime := time.Now()
var stringProxUrl string
proxUrl, err := url.Parse(fmt.Sprintf("%s:%s", ip, port))
stringProxUrl = proxUrl.String()
if err != nil {
stringProxUrl = fmt.Sprintf("%s:%s", ip, port)
}
request := c.httpClient.SetProxy(fmt.Sprintf("%s:%s", ip, port)).R()
request := c.httpClient.SetProxy(stringProxUrl).R()
for h, val := range headers {
request.Header[h] = val
}
request.Header.Set(UserAgent, UserAgentValue)
httpResp, httpErr := request.Get(urls)
if httpResp != nil {
body = httpResp.Body()
respHeader = httpResp.Header()
statusCode = httpResp.StatusCode()
}
ctx.Info("Get",
logger.ToField(urlKey, urls),
logger.ToField(requestKey, toRequest(request.Header, nil)),
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) GetWithProxyAuth(ctx *context.UlfsaarContext, path, ip, port, username, password string, headers http.Header) (respHeader http.Header, statusCode int, body []byte, err error) {
urls := c.options.Address + path
startTime := time.Now()
var stringProxUrl string
proxUrl, err := url.Parse(fmt.Sprintf("%s:%s", ip, port))
stringProxUrl = proxUrl.String()
if err != nil {
stringProxUrl = fmt.Sprintf("%s:%s", ip, port)
}
request := c.httpClient.SetProxy(stringProxUrl).R()
for h, val := range headers {
request.Header[h] = val
}
request.Header.Set(UserAgent, UserAgentValue)
request.Header.Set("Proxy-Authorization", base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", username, password))))
httpResp, httpErr := request.Get(url)
httpResp, httpErr := request.Get(urls)
if httpResp != nil {
body = httpResp.Body()
......@@ -80,7 +127,7 @@ func (c *client) GetWithProxy(ctx *context.UlfsaarContext, path, ip, port, usern
}
ctx.Info("Get",
logger.ToField(urlKey, url),
logger.ToField(urlKey, urls),
logger.ToField(requestKey, toRequest(request.Header, nil)),
logger.ToField(responseKey, toResponse(statusCode, respHeader, body)),
logger.ToField(startProcessingTimeKey, startProcessingTime(startTime)),
......
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