mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-09 12:37:49 +00:00
49 lines
1.8 KiB
Go
49 lines
1.8 KiB
Go
// Copyright 2022 Princess B33f Heavy Industries / Dave Shanley
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package v2
|
|
|
|
import (
|
|
"github.com/pb33f/libopenapi/datamodel"
|
|
lowmodel "github.com/pb33f/libopenapi/datamodel/low"
|
|
low "github.com/pb33f/libopenapi/datamodel/low/v2"
|
|
"github.com/pb33f/libopenapi/orderedmap"
|
|
)
|
|
|
|
// SecurityDefinitions is a high-level representation of a Swagger / OpenAPI 2 Security Definitions object, that
|
|
// is backed by a low-level one.
|
|
//
|
|
// A declaration of the security schemes available to be used in the specification. This does not enforce the security
|
|
// schemes on the operations and only serves to provide the relevant details for each scheme
|
|
// - https://swagger.io/specification/v2/#securityDefinitionsObject
|
|
type SecurityDefinitions struct {
|
|
Definitions *orderedmap.Map[string, *SecurityScheme]
|
|
low *low.SecurityDefinitions
|
|
}
|
|
|
|
// NewSecurityDefinitions creates a new high-level instance of a SecurityDefinitions from a low-level one.
|
|
func NewSecurityDefinitions(definitions *low.SecurityDefinitions) *SecurityDefinitions {
|
|
sd := new(SecurityDefinitions)
|
|
sd.low = definitions
|
|
schemes := orderedmap.New[string, *SecurityScheme]()
|
|
translateFunc := func(pair orderedmap.Pair[lowmodel.KeyReference[string], lowmodel.ValueReference[*low.SecurityScheme]]) (asyncResult[*SecurityScheme], error) {
|
|
return asyncResult[*SecurityScheme]{
|
|
key: pair.Key().Value,
|
|
result: NewSecurityScheme(pair.Value().Value),
|
|
}, nil
|
|
}
|
|
resultFunc := func(value asyncResult[*SecurityScheme]) error {
|
|
schemes.Set(value.key, value.result)
|
|
return nil
|
|
}
|
|
_ = datamodel.TranslateMapParallel(definitions.Definitions, translateFunc, resultFunc)
|
|
|
|
sd.Definitions = schemes
|
|
return sd
|
|
}
|
|
|
|
// GoLow returns the low-level SecurityDefinitions instance used to create the high-level one.
|
|
func (sd *SecurityDefinitions) GoLow() *low.SecurityDefinitions {
|
|
return sd.low
|
|
}
|