func getCredURLForAPI(cfg *config.Configuration, req *http.Request) (*url.URL, error) { operation := GetOperationForRequest(req) apiUrl, err := url.Parse(cfg.Endpoint(operation).Url) if err != nil { return nil, err } // if the LFS request doesn't match the current LFS url, don't bother // attempting to set the Authorization header from the LFS or Git remote URLs. if req.URL.Scheme != apiUrl.Scheme || req.URL.Host != apiUrl.Host { return req.URL, nil } if setRequestAuthFromUrl(cfg, req, apiUrl) { return nil, nil } credsUrl := apiUrl if len(cfg.CurrentRemote) > 0 { if u := cfg.GitRemoteUrl(cfg.CurrentRemote, operation == "upload"); u != "" { gitRemoteUrl, err := url.Parse(u) if err != nil { return nil, err } if gitRemoteUrl.Scheme == apiUrl.Scheme && gitRemoteUrl.Host == apiUrl.Host { if setRequestAuthFromUrl(cfg, req, gitRemoteUrl) { return nil, nil } credsUrl = gitRemoteUrl } } } return credsUrl, nil }