Skip to content

Commit 9b613b4

Browse files
committed
feat: add request execution
Execute HTTP requests and measure timing
1 parent 78bda26 commit 9b613b4

1 file changed

Lines changed: 34 additions & 0 deletions

File tree

internal/http/manager.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,37 @@ func (h *HTTPManager) ValidateRequest(req *Request) error {
5151
}
5252
return nil
5353
}
54+
55+
func (h *HTTPManager) ExecuteRequest(req *Request) (*Response, error) {
56+
if err := h.ValidateRequest(req); err != nil {
57+
return nil, err
58+
}
59+
60+
log.Debug("executing HTTP request", "method", req.Method, "url", req.URL)
61+
62+
start := time.Now()
63+
httpReq, err := http.NewRequest(strings.ToUpper(req.Method), req.URL, nil)
64+
if err != nil {
65+
log.Error("failed to create HTTP request", "error", err)
66+
return nil, fmt.Errorf("failed to create request: %w", err)
67+
}
68+
69+
resp, err := h.Client.Do(httpReq)
70+
if err != nil {
71+
log.Error("HTTP request failed", "error", err)
72+
return nil, fmt.Errorf("request failed: %w", err)
73+
}
74+
defer resp.Body.Close()
75+
76+
duration := time.Since(start)
77+
78+
response := &Response{
79+
StatusCode: resp.StatusCode,
80+
Status: resp.Status,
81+
Headers: resp.Header,
82+
Duration: duration,
83+
}
84+
85+
log.Info("HTTP request completed", "status", resp.StatusCode, "duration", duration)
86+
return response, nil
87+
}

0 commit comments

Comments
 (0)