MCPcopy
hub / github.com/git-lfs/git-lfs / getAuthAccess

Function getAuthAccess

lfsapi/auth.go:345–376  ·  view source on GitHub ↗
(res *http.Response, access creds.AccessMode, modes []creds.AccessMode, multistage bool)

Source from the content-addressed store, hash-verified

343)
344
345func getAuthAccess(res *http.Response, access creds.AccessMode, modes []creds.AccessMode, multistage bool) (creds.AccessMode, []creds.AccessMode, []string) {
346 newModes := make([]creds.AccessMode, 0, len(modes))
347 for _, mode := range modes {
348 if multistage || access != mode {
349 newModes = append(newModes, mode)
350 }
351 }
352 headers := make([]string, 0)
353 if res != nil {
354 for _, headerName := range authenticateHeaders {
355 headers = append(headers, res.Header[headerName]...)
356 }
357 supportedModes := make(map[creds.AccessMode]struct{})
358 for _, headerName := range authenticateHeaders {
359 for _, auth := range res.Header[headerName] {
360 pieces := strings.SplitN(strings.ToLower(auth), " ", 2)
361 if len(pieces) == 0 {
362 continue
363 }
364
365 supportedModes[creds.AccessMode(pieces[0])] = struct{}{}
366 }
367 }
368 for _, mode := range newModes {
369 if _, ok := supportedModes[mode]; ok {
370 return mode, newModes, headers
371 }
372 }
373 }
374
375 return creds.BasicAccess, newModes, headers
376}

Callers 3

doWithAuthMethod · 0.85
TestDualAccessModesFunction · 0.85

Calls 1

AccessModeTypeAlias · 0.92

Tested by 2

TestDualAccessModesFunction · 0.68