func getAllOfTable()

in coverage/expand.go [39:71]


func getAllOfTable(swaggerPath string) (map[string]map[string]interface{}, error) {
	if vt, ok := allOfTableCache.Get(swaggerPath); ok {
		return vt, nil
	}

	doc, err := loadSwagger(swaggerPath)
	if err != nil {
		return nil, err
	}
	spec := doc.Spec()

	allOfTable := map[string]map[string]interface{}{}
	for k, v := range spec.Definitions {
		if len(v.AllOf) > 0 {
			for _, allOf := range v.AllOf {
				if allOf.Ref.String() != "" {
					modelName, absPath := SchemaNamePathFromRef(swaggerPath, allOf.Ref)
					if absPath != swaggerPath {
						continue
					}

					if _, ok := allOfTable[modelName]; !ok {
						allOfTable[modelName] = map[string]interface{}{}
					}
					allOfTable[modelName][k] = nil
				}
			}
		}
	}

	allOfTableCache.Add(swaggerPath, allOfTable)
	return allOfTable, nil
}