123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- package restful
- // 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
- // 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 {
- Name, Description, DataType, DataFormat string
- Kind int
- Required bool
- AllowableValues map[string]string
- AllowMultiple bool
- DefaultValue string
- CollectionFormat string
- }
- // 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
- }
- // 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
- }
- // AllowableValues sets the allowableValues field and returns the receiver
- func (p *Parameter) AllowableValues(values map[string]string) *Parameter {
- p.data.AllowableValues = 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
- }
|