in proxymode/proxymode.go [114:140]
func (pm *ProxyMode) Search(r *http.Request) (packages.Packages, error) {
proxyURL := *r.URL
proxyURL.Host = pm.destinationURL.Host
proxyURL.Scheme = pm.destinationURL.Scheme
proxyURL.User = pm.destinationURL.User
proxyRequest, err := retryablehttp.NewRequest(http.MethodGet, proxyURL.String(), nil)
if err != nil {
return nil, fmt.Errorf("can't create proxy request: %w", err)
}
pm.logger.Debug("Proxy /search request", zap.String("request.uri", proxyURL.String()))
response, err := pm.httpClient.Do(proxyRequest)
if err != nil {
return nil, fmt.Errorf("can't proxy search request: %w", err)
}
defer response.Body.Close()
var pkgs packages.Packages
err = json.NewDecoder(response.Body).Decode(&pkgs)
if err != nil {
return nil, fmt.Errorf("can't proxy search request: %w", err)
}
for i := 0; i < len(pkgs); i++ {
pkgs[i].SetRemoteResolver(pm.resolver)
}
return pkgs, nil
}