func()

in proxymode/proxymode.go [142:165]


func (pm *ProxyMode) Categories(r *http.Request) ([]packages.Category, 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 /categories request", zap.String("request.uri", proxyURL.String()))
	response, err := pm.httpClient.Do(proxyRequest)
	if err != nil {
		return nil, fmt.Errorf("can't proxy categories request: %w", err)
	}
	defer response.Body.Close()
	var cats []packages.Category
	err = json.NewDecoder(response.Body).Decode(&cats)
	if err != nil {
		return nil, fmt.Errorf("can't proxy categories request: %w", err)
	}
	return cats, nil
}