parameter.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package restful
  2. // Copyright 2013 Ernest Micklei. All rights reserved.
  3. // Use of this source code is governed by a license
  4. // that can be found in the LICENSE file.
  5. const (
  6. // PathParameterKind = indicator of Request parameter type "path"
  7. PathParameterKind = iota
  8. // QueryParameterKind = indicator of Request parameter type "query"
  9. QueryParameterKind
  10. // BodyParameterKind = indicator of Request parameter type "body"
  11. BodyParameterKind
  12. // HeaderParameterKind = indicator of Request parameter type "header"
  13. HeaderParameterKind
  14. // FormParameterKind = indicator of Request parameter type "form"
  15. FormParameterKind
  16. )
  17. // Parameter is for documententing the parameter used in a Http Request
  18. // ParameterData kinds are Path,Query and Body
  19. type Parameter struct {
  20. data *ParameterData
  21. }
  22. // ParameterData represents the state of a Parameter.
  23. // It is made public to make it accessible to e.g. the Swagger package.
  24. type ParameterData struct {
  25. Name, Description, DataType, DataFormat string
  26. Kind int
  27. Required bool
  28. AllowableValues map[string]string
  29. AllowMultiple bool
  30. DefaultValue string
  31. }
  32. // Data returns the state of the Parameter
  33. func (p *Parameter) Data() ParameterData {
  34. return *p.data
  35. }
  36. // Kind returns the parameter type indicator (see const for valid values)
  37. func (p *Parameter) Kind() int {
  38. return p.data.Kind
  39. }
  40. func (p *Parameter) bePath() *Parameter {
  41. p.data.Kind = PathParameterKind
  42. return p
  43. }
  44. func (p *Parameter) beQuery() *Parameter {
  45. p.data.Kind = QueryParameterKind
  46. return p
  47. }
  48. func (p *Parameter) beBody() *Parameter {
  49. p.data.Kind = BodyParameterKind
  50. return p
  51. }
  52. func (p *Parameter) beHeader() *Parameter {
  53. p.data.Kind = HeaderParameterKind
  54. return p
  55. }
  56. func (p *Parameter) beForm() *Parameter {
  57. p.data.Kind = FormParameterKind
  58. return p
  59. }
  60. // Required sets the required field and returns the receiver
  61. func (p *Parameter) Required(required bool) *Parameter {
  62. p.data.Required = required
  63. return p
  64. }
  65. // AllowMultiple sets the allowMultiple field and returns the receiver
  66. func (p *Parameter) AllowMultiple(multiple bool) *Parameter {
  67. p.data.AllowMultiple = multiple
  68. return p
  69. }
  70. // AllowableValues sets the allowableValues field and returns the receiver
  71. func (p *Parameter) AllowableValues(values map[string]string) *Parameter {
  72. p.data.AllowableValues = values
  73. return p
  74. }
  75. // DataType sets the dataType field and returns the receiver
  76. func (p *Parameter) DataType(typeName string) *Parameter {
  77. p.data.DataType = typeName
  78. return p
  79. }
  80. // DataFormat sets the dataFormat field for Swagger UI
  81. func (p *Parameter) DataFormat(formatName string) *Parameter {
  82. p.data.DataFormat = formatName
  83. return p
  84. }
  85. // DefaultValue sets the default value field and returns the receiver
  86. func (p *Parameter) DefaultValue(stringRepresentation string) *Parameter {
  87. p.data.DefaultValue = stringRepresentation
  88. return p
  89. }
  90. // Description sets the description value field and returns the receiver
  91. func (p *Parameter) Description(doc string) *Parameter {
  92. p.data.Description = doc
  93. return p
  94. }