mirror of
https://github.com/ceph/ceph-csi.git
synced 2025-04-11 18:13:00 +00:00
Several packages are only used while running the e2e suite. These packages are less important to update, as the they can not influence the final executable that is part of the Ceph-CSI container-image. By moving these dependencies out of the main Ceph-CSI go.mod, it is easier to identify if a reported CVE affects Ceph-CSI, or only the testing (like most of the Kubernetes CVEs). Signed-off-by: Niels de Vos <ndevos@ibm.com>
243 lines
6.7 KiB
Go
243 lines
6.7 KiB
Go
package restful
|
|
|
|
import "sort"
|
|
|
|
// Copyright 2013 Ernest Micklei. All rights reserved.
|
|
// Use of this source code is governed by a license
|
|
// that can be found in the LICENSE file.
|
|
|
|
const (
|
|
// PathParameterKind = indicator of Request parameter type "path"
|
|
PathParameterKind = iota
|
|
|
|
// QueryParameterKind = indicator of Request parameter type "query"
|
|
QueryParameterKind
|
|
|
|
// BodyParameterKind = indicator of Request parameter type "body"
|
|
BodyParameterKind
|
|
|
|
// HeaderParameterKind = indicator of Request parameter type "header"
|
|
HeaderParameterKind
|
|
|
|
// FormParameterKind = indicator of Request parameter type "form"
|
|
FormParameterKind
|
|
|
|
// MultiPartFormParameterKind = indicator of Request parameter type "multipart/form-data"
|
|
MultiPartFormParameterKind
|
|
|
|
// CollectionFormatCSV comma separated values `foo,bar`
|
|
CollectionFormatCSV = CollectionFormat("csv")
|
|
|
|
// CollectionFormatSSV space separated values `foo bar`
|
|
CollectionFormatSSV = CollectionFormat("ssv")
|
|
|
|
// CollectionFormatTSV tab separated values `foo\tbar`
|
|
CollectionFormatTSV = CollectionFormat("tsv")
|
|
|
|
// CollectionFormatPipes pipe separated values `foo|bar`
|
|
CollectionFormatPipes = CollectionFormat("pipes")
|
|
|
|
// CollectionFormatMulti corresponds to multiple parameter instances instead of multiple values for a single
|
|
// instance `foo=bar&foo=baz`. This is valid only for QueryParameters and FormParameters
|
|
CollectionFormatMulti = CollectionFormat("multi")
|
|
)
|
|
|
|
type CollectionFormat string
|
|
|
|
func (cf CollectionFormat) String() string {
|
|
return string(cf)
|
|
}
|
|
|
|
// Parameter is for documententing the parameter used in a Http Request
|
|
// ParameterData kinds are Path,Query and Body
|
|
type Parameter struct {
|
|
data *ParameterData
|
|
}
|
|
|
|
// ParameterData represents the state of a Parameter.
|
|
// It is made public to make it accessible to e.g. the Swagger package.
|
|
type ParameterData struct {
|
|
ExtensionProperties
|
|
Name, Description, DataType, DataFormat string
|
|
Kind int
|
|
Required bool
|
|
// AllowableValues is deprecated. Use PossibleValues instead
|
|
AllowableValues map[string]string
|
|
PossibleValues []string
|
|
AllowMultiple bool
|
|
AllowEmptyValue bool
|
|
DefaultValue string
|
|
CollectionFormat string
|
|
Pattern string
|
|
Minimum *float64
|
|
Maximum *float64
|
|
MinLength *int64
|
|
MaxLength *int64
|
|
MinItems *int64
|
|
MaxItems *int64
|
|
UniqueItems bool
|
|
}
|
|
|
|
// Data returns the state of the Parameter
|
|
func (p *Parameter) Data() ParameterData {
|
|
return *p.data
|
|
}
|
|
|
|
// Kind returns the parameter type indicator (see const for valid values)
|
|
func (p *Parameter) Kind() int {
|
|
return p.data.Kind
|
|
}
|
|
|
|
func (p *Parameter) bePath() *Parameter {
|
|
p.data.Kind = PathParameterKind
|
|
return p
|
|
}
|
|
func (p *Parameter) beQuery() *Parameter {
|
|
p.data.Kind = QueryParameterKind
|
|
return p
|
|
}
|
|
func (p *Parameter) beBody() *Parameter {
|
|
p.data.Kind = BodyParameterKind
|
|
return p
|
|
}
|
|
|
|
func (p *Parameter) beHeader() *Parameter {
|
|
p.data.Kind = HeaderParameterKind
|
|
return p
|
|
}
|
|
|
|
func (p *Parameter) beForm() *Parameter {
|
|
p.data.Kind = FormParameterKind
|
|
return p
|
|
}
|
|
|
|
func (p *Parameter) beMultiPartForm() *Parameter {
|
|
p.data.Kind = MultiPartFormParameterKind
|
|
return p
|
|
}
|
|
|
|
// Required sets the required field and returns the receiver
|
|
func (p *Parameter) Required(required bool) *Parameter {
|
|
p.data.Required = required
|
|
return p
|
|
}
|
|
|
|
// AllowMultiple sets the allowMultiple field and returns the receiver
|
|
func (p *Parameter) AllowMultiple(multiple bool) *Parameter {
|
|
p.data.AllowMultiple = multiple
|
|
return p
|
|
}
|
|
|
|
// AddExtension adds or updates a key=value pair to the extension map
|
|
func (p *Parameter) AddExtension(key string, value interface{}) *Parameter {
|
|
p.data.AddExtension(key, value)
|
|
return p
|
|
}
|
|
|
|
// AllowEmptyValue sets the AllowEmptyValue field and returns the receiver
|
|
func (p *Parameter) AllowEmptyValue(multiple bool) *Parameter {
|
|
p.data.AllowEmptyValue = multiple
|
|
return p
|
|
}
|
|
|
|
// AllowableValues is deprecated. Use PossibleValues instead. Both will be set.
|
|
func (p *Parameter) AllowableValues(values map[string]string) *Parameter {
|
|
p.data.AllowableValues = values
|
|
|
|
allowableSortedKeys := make([]string, 0, len(values))
|
|
for k := range values {
|
|
allowableSortedKeys = append(allowableSortedKeys, k)
|
|
}
|
|
sort.Strings(allowableSortedKeys)
|
|
|
|
p.data.PossibleValues = make([]string, 0, len(values))
|
|
for _, k := range allowableSortedKeys {
|
|
p.data.PossibleValues = append(p.data.PossibleValues, values[k])
|
|
}
|
|
return p
|
|
}
|
|
|
|
// PossibleValues sets the possible values field and returns the receiver
|
|
func (p *Parameter) PossibleValues(values []string) *Parameter {
|
|
p.data.PossibleValues = values
|
|
return p
|
|
}
|
|
|
|
// DataType sets the dataType field and returns the receiver
|
|
func (p *Parameter) DataType(typeName string) *Parameter {
|
|
p.data.DataType = typeName
|
|
return p
|
|
}
|
|
|
|
// DataFormat sets the dataFormat field for Swagger UI
|
|
func (p *Parameter) DataFormat(formatName string) *Parameter {
|
|
p.data.DataFormat = formatName
|
|
return p
|
|
}
|
|
|
|
// DefaultValue sets the default value field and returns the receiver
|
|
func (p *Parameter) DefaultValue(stringRepresentation string) *Parameter {
|
|
p.data.DefaultValue = stringRepresentation
|
|
return p
|
|
}
|
|
|
|
// Description sets the description value field and returns the receiver
|
|
func (p *Parameter) Description(doc string) *Parameter {
|
|
p.data.Description = doc
|
|
return p
|
|
}
|
|
|
|
// CollectionFormat sets the collection format for an array type
|
|
func (p *Parameter) CollectionFormat(format CollectionFormat) *Parameter {
|
|
p.data.CollectionFormat = format.String()
|
|
return p
|
|
}
|
|
|
|
// Pattern sets the pattern field and returns the receiver
|
|
func (p *Parameter) Pattern(pattern string) *Parameter {
|
|
p.data.Pattern = pattern
|
|
return p
|
|
}
|
|
|
|
// Minimum sets the minimum field and returns the receiver
|
|
func (p *Parameter) Minimum(minimum float64) *Parameter {
|
|
p.data.Minimum = &minimum
|
|
return p
|
|
}
|
|
|
|
// Maximum sets the maximum field and returns the receiver
|
|
func (p *Parameter) Maximum(maximum float64) *Parameter {
|
|
p.data.Maximum = &maximum
|
|
return p
|
|
}
|
|
|
|
// MinLength sets the minLength field and returns the receiver
|
|
func (p *Parameter) MinLength(minLength int64) *Parameter {
|
|
p.data.MinLength = &minLength
|
|
return p
|
|
}
|
|
|
|
// MaxLength sets the maxLength field and returns the receiver
|
|
func (p *Parameter) MaxLength(maxLength int64) *Parameter {
|
|
p.data.MaxLength = &maxLength
|
|
return p
|
|
}
|
|
|
|
// MinItems sets the minItems field and returns the receiver
|
|
func (p *Parameter) MinItems(minItems int64) *Parameter {
|
|
p.data.MinItems = &minItems
|
|
return p
|
|
}
|
|
|
|
// MaxItems sets the maxItems field and returns the receiver
|
|
func (p *Parameter) MaxItems(maxItems int64) *Parameter {
|
|
p.data.MaxItems = &maxItems
|
|
return p
|
|
}
|
|
|
|
// UniqueItems sets the uniqueItems field and returns the receiver
|
|
func (p *Parameter) UniqueItems(uniqueItems bool) *Parameter {
|
|
p.data.UniqueItems = uniqueItems
|
|
return p
|
|
}
|