MCPcopy Index your code
hub / github.com/getkin/kin-openapi / resolveHeaderRef

Method resolveHeaderRef

openapi3/loader.go:650–707  ·  view source on GitHub ↗
(doc *T, component *HeaderRef, documentPath *url.URL)

Source from the content-addressed store, hash-verified

648)
649
650func (loader *Loader) resolveHeaderRef(doc *T, component *HeaderRef, documentPath *url.URL) (err error) {
651 if component.isEmpty() {
652 return errMUSTHeader
653 }
654
655 if ref := component.Ref; ref != "" {
656 if component.Value != nil {
657 return nil
658 }
659 if !loader.shouldVisitRef(ref, func(value any) {
660 component.Value = value.(*Header)
661 refPath, _ := loader.resolveRefPath(ref, documentPath)
662 component.setRefPath(refPath)
663 }) {
664 return nil
665 }
666 loader.visitRef(ref)
667 if isSingleRefElement(ref) {
668 var header Header
669 if documentPath, err = loader.loadSingleElementFromURI(ref, documentPath, &header); err != nil {
670 return err
671 }
672 component.Value = &header
673 component.setRefPath(documentPath)
674 } else {
675 var resolved HeaderRef
676 doc, componentPath, err := loader.resolveComponent(doc, ref, documentPath, &resolved)
677 if err != nil {
678 return err
679 }
680 if err := loader.resolveHeaderRef(doc, &resolved, componentPath); err != nil {
681 if err == errMUSTHeader {
682 return nil
683 }
684 return err
685 }
686 component.Value = resolved.Value
687 component.setRefPath(resolved.RefPath())
688 }
689 defer loader.unvisitRef(ref, component.Value)
690 }
691 value := component.Value
692 if value == nil {
693 return nil
694 }
695
696 if schema := value.Schema; schema != nil {
697 if err := loader.resolveSchemaRef(doc, schema, documentPath, []string{}); err != nil {
698 return err
699 }
700 }
701 for _, k := range componentNames(value.Examples) {
702 if err := loader.resolveExampleRef(doc, value.Examples[k], documentPath); err != nil {
703 return err
704 }
705 }
706 return nil
707}

Callers 2

ResolveRefsInMethod · 0.95
resolveResponseRefMethod · 0.95

Calls 13

shouldVisitRefMethod · 0.95
resolveRefPathMethod · 0.95
visitRefMethod · 0.95
resolveComponentMethod · 0.95
RefPathMethod · 0.95
unvisitRefMethod · 0.95
resolveSchemaRefMethod · 0.95
resolveExampleRefMethod · 0.95
isSingleRefElementFunction · 0.85
componentNamesFunction · 0.85
isEmptyMethod · 0.45

Tested by

no test coverage detected