diff --git a/client.go b/client.go index 2d45271..b2641f0 100644 --- a/client.go +++ b/client.go @@ -3,6 +3,7 @@ package rubygemsclient import ( + "context" "encoding/json" "fmt" "net/http" @@ -63,7 +64,12 @@ func (c *Client) GetGemInfo(name, version string) (*GemInfo, error) { // In production, we'd use the compact index or version-specific APIs url := fmt.Sprintf("%s/gems/%s.json", c.baseURL, name) - resp, err := c.httpClient.Get(url) + req, err := http.NewRequestWithContext(context.Background(), "GET", url, http.NoBody) + if err != nil { + return nil, fmt.Errorf("failed to create request: %w", err) + } + + resp, err := c.httpClient.Do(req) if err != nil { return nil, fmt.Errorf("failed to fetch gem info: %w", err) } @@ -94,7 +100,12 @@ type VersionInfo struct { func (c *Client) GetGemVersions(name string) ([]string, error) { url := fmt.Sprintf("%s/versions/%s.json", c.baseURL, name) - resp, err := c.httpClient.Get(url) + req, err := http.NewRequestWithContext(context.Background(), "GET", url, http.NoBody) + if err != nil { + return nil, fmt.Errorf("failed to create request: %w", err) + } + + resp, err := c.httpClient.Do(req) if err != nil { return nil, fmt.Errorf("failed to fetch gem versions: %w", err) } @@ -165,4 +176,3 @@ func (c *Client) GetMultipleGemInfo(requests []GemInfoRequest) []GemInfoResult { wg.Wait() return results } - diff --git a/client_test.go b/client_test.go index 52e0fe1..208c753 100644 --- a/client_test.go +++ b/client_test.go @@ -6,7 +6,6 @@ import ( "net/http/httptest" "testing" "time" - ) func TestNewClient(t *testing.T) { @@ -50,7 +49,7 @@ func TestGetGemInfo_Success(t *testing.T) { } w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(response) + _ = json.NewEncoder(w).Encode(response) })) defer server.Close() @@ -117,7 +116,7 @@ func TestGetGemVersions_Success(t *testing.T) { } w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(versions) + _ = json.NewEncoder(w).Encode(versions) })) defer server.Close() @@ -152,7 +151,7 @@ func TestGetGemVersions_TooManyVersions(t *testing.T) { } w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(versions) + _ = json.NewEncoder(w).Encode(versions) })) defer server.Close() @@ -186,7 +185,7 @@ func TestGetMultipleGemInfo(t *testing.T) { } w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(response) + _ = json.NewEncoder(w).Encode(response) })) defer server.Close() @@ -233,4 +232,3 @@ func contains(s, substr string) bool { return len(s) >= len(substr) && s[:len(substr)] == substr || (len(s) > len(substr) && contains(s[1:], substr)) } -