init project
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
package http
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"go.uber.org/zap"
|
||||
|
||||
"furtuna-be/internal/common/logger"
|
||||
)
|
||||
|
||||
type HttpClient struct {
|
||||
Client *http.Client
|
||||
}
|
||||
|
||||
func NewHttpClient() *HttpClient {
|
||||
return &HttpClient{
|
||||
Client: &http.Client{},
|
||||
}
|
||||
}
|
||||
|
||||
func (c *HttpClient) Do(ctx context.Context, req *http.Request) (int, []byte, error) {
|
||||
start := time.Now()
|
||||
logger.ContextLogger(ctx).Info(fmt.Sprintf("Sending request: %v %v", req.Method, req.URL))
|
||||
resp, err := c.Client.Do(req)
|
||||
if err != nil {
|
||||
logger.ContextLogger(ctx).Error(" Failed to send request:", zap.Error(err))
|
||||
return 0, nil, err
|
||||
}
|
||||
|
||||
logger.ContextLogger(ctx).Info(fmt.Sprintf("Received Response: : %v", resp.StatusCode))
|
||||
|
||||
defer resp.Body.Close()
|
||||
body, err := ioutil.ReadAll(resp.Body)
|
||||
if err != nil {
|
||||
logger.ContextLogger(ctx).Error(" Failed to read response:", zap.Error(err))
|
||||
return 0, nil, err
|
||||
}
|
||||
|
||||
logger.ContextLogger(ctx).Info(fmt.Sprintf("Latency : %v", time.Since(start)))
|
||||
|
||||
return resp.StatusCode, body, nil
|
||||
}
|
||||
Reference in New Issue
Block a user