@@ -18,8 +18,6 @@ package cmd
1818import (
1919 "encoding/json"
2020 "fmt"
21- "net/http"
22- "time"
2321
2422 sce "github.com/ossf/scorecard/v4/errors"
2523)
@@ -29,24 +27,24 @@ type packageMangerResponse struct {
2927 exists bool
3028}
3129
32- // TODO(#1568): Add unit tests for this.
33- func fetchGitRepositoryFromPackageManagers ( npm , pypi , rubygems string ) (packageMangerResponse , error ) {
30+ func fetchGitRepositoryFromPackageManagers ( npm , pypi , rubygems string ,
31+ manager packageManagerClient ) (packageMangerResponse , error ) {
3432 if npm != "" {
35- gitRepo , err := fetchGitRepositoryFromNPM (npm )
33+ gitRepo , err := fetchGitRepositoryFromNPM (npm , manager )
3634 return packageMangerResponse {
3735 exists : true ,
3836 associatedRepo : gitRepo ,
3937 }, err
4038 }
4139 if pypi != "" {
42- gitRepo , err := fetchGitRepositoryFromPYPI (pypi )
40+ gitRepo , err := fetchGitRepositoryFromPYPI (pypi , manager )
4341 return packageMangerResponse {
4442 exists : true ,
4543 associatedRepo : gitRepo ,
4644 }, err
4745 }
4846 if rubygems != "" {
49- gitRepo , err := fetchGitRepositoryFromRubyGems (rubygems )
47+ gitRepo , err := fetchGitRepositoryFromRubyGems (rubygems , manager )
5048 return packageMangerResponse {
5149 exists : true ,
5250 associatedRepo : gitRepo ,
@@ -79,14 +77,9 @@ type rubyGemsSearchResults struct {
7977}
8078
8179// Gets the GitHub repository URL for the npm package.
82- // nolint: noctx
83- func fetchGitRepositoryFromNPM (packageName string ) (string , error ) {
80+ func fetchGitRepositoryFromNPM (packageName string , packageManager packageManagerClient ) (string , error ) {
8481 npmSearchURL := "https://registry.npmjs.org/-/v1/search?text=%s&size=1"
85- const timeout = 10
86- client := & http.Client {
87- Timeout : timeout * time .Second ,
88- }
89- resp , err := client .Get (fmt .Sprintf (npmSearchURL , packageName ))
82+ resp , err := packageManager .Get (npmSearchURL , packageName )
9083 if err != nil {
9184 return "" , sce .WithMessage (sce .ErrScorecardInternal , fmt .Sprintf ("failed to get npm package json: %v" , err ))
9285 }
@@ -105,14 +98,9 @@ func fetchGitRepositoryFromNPM(packageName string) (string, error) {
10598}
10699
107100// Gets the GitHub repository URL for the pypi package.
108- // nolint: noctx
109- func fetchGitRepositoryFromPYPI (packageName string ) (string , error ) {
101+ func fetchGitRepositoryFromPYPI (packageName string , manager packageManagerClient ) (string , error ) {
110102 pypiSearchURL := "https://pypi.org/pypi/%s/json"
111- const timeout = 10
112- client := & http.Client {
113- Timeout : timeout * time .Second ,
114- }
115- resp , err := client .Get (fmt .Sprintf (pypiSearchURL , packageName ))
103+ resp , err := manager .Get (pypiSearchURL , packageName )
116104 if err != nil {
117105 return "" , sce .WithMessage (sce .ErrScorecardInternal , fmt .Sprintf ("failed to get pypi package json: %v" , err ))
118106 }
@@ -131,14 +119,9 @@ func fetchGitRepositoryFromPYPI(packageName string) (string, error) {
131119}
132120
133121// Gets the GitHub repository URL for the rubygems package.
134- // nolint: noctx
135- func fetchGitRepositoryFromRubyGems (packageName string ) (string , error ) {
122+ func fetchGitRepositoryFromRubyGems (packageName string , manager packageManagerClient ) (string , error ) {
136123 rubyGemsSearchURL := "https://rubygems.org/api/v1/gems/%s.json"
137- const timeout = 10
138- client := & http.Client {
139- Timeout : timeout * time .Second ,
140- }
141- resp , err := client .Get (fmt .Sprintf (rubyGemsSearchURL , packageName ))
124+ resp , err := manager .Get (rubyGemsSearchURL , packageName )
142125 if err != nil {
143126 return "" , sce .WithMessage (sce .ErrScorecardInternal , fmt .Sprintf ("failed to get ruby gem json: %v" , err ))
144127 }
0 commit comments