mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-09 20:47:44 +00:00
3.0 and 2.0 do not work, there are multiple versions and anything with a period in it sucks from my point of view, v2 and v3 feel much better from a DX perspective.
43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
// Copyright 2022 Princess B33f Heavy Industries / Dave Shanley
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package v2
|
|
|
|
import low "github.com/pb33f/libopenapi/datamodel/low/v2"
|
|
|
|
type ParameterDefinitions struct {
|
|
Definitions map[string]*Parameter
|
|
low *low.ParameterDefinitions
|
|
}
|
|
|
|
func NewParametersDefinitions(parametersDefinitions *low.ParameterDefinitions) *ParameterDefinitions {
|
|
pd := new(ParameterDefinitions)
|
|
pd.low = parametersDefinitions
|
|
params := make(map[string]*Parameter)
|
|
var buildParam = func(name string, param *low.Parameter, rChan chan<- asyncResult[*Parameter]) {
|
|
rChan <- asyncResult[*Parameter]{
|
|
key: name,
|
|
result: NewParameter(param),
|
|
}
|
|
}
|
|
resChan := make(chan asyncResult[*Parameter])
|
|
for k := range parametersDefinitions.Definitions {
|
|
go buildParam(k.Value, parametersDefinitions.Definitions[k].Value, resChan)
|
|
}
|
|
totalParams := len(parametersDefinitions.Definitions)
|
|
completedParams := 0
|
|
for completedParams < totalParams {
|
|
select {
|
|
case r := <-resChan:
|
|
completedParams++
|
|
params[r.key] = r.result
|
|
}
|
|
}
|
|
pd.Definitions = params
|
|
return pd
|
|
}
|
|
|
|
func (p *ParameterDefinitions) GoLow() *low.ParameterDefinitions {
|
|
return p.low
|
|
}
|