// AdvertisedReferences retrieves the advertised references from the server. func (s *session) AdvertisedReferences() (*packp.AdvRefs, error) { if s.advRefs != nil { return s.advRefs, nil } ar := packp.NewAdvRefs() if err := ar.Decode(s.Stdout); err != nil { if err := s.handleAdvRefDecodeError(err); err != nil { return nil, err } } transport.FilterUnsupportedCapabilities(ar.Capabilities) s.advRefs = ar return ar, nil }
func (s *fetchPackSession) AdvertisedReferences() (*packp.AdvRefs, error) { if s.advRefs != nil { return s.advRefs, nil } url := fmt.Sprintf( "%s/info/refs?service=%s", s.endpoint.String(), transport.UploadPackServiceName, ) req, err := http.NewRequest(http.MethodGet, url, nil) if err != nil { return nil, err } s.applyAuthToRequest(req) s.applyHeadersToRequest(req, nil) res, err := s.client.Do(req) if err != nil { return nil, err } defer res.Body.Close() if res.StatusCode == http.StatusUnauthorized { return nil, transport.ErrAuthorizationRequired } ar := packp.NewAdvRefs() if err := ar.Decode(res.Body); err != nil { if err == packp.ErrEmptyAdvRefs { err = transport.ErrEmptyRemoteRepository } return nil, err } transport.FilterUnsupportedCapabilities(ar.Capabilities) s.advRefs = ar return ar, nil }