func()

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
}