forked from chanced/openapi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
encoding.go
83 lines (75 loc) · 3.49 KB
/
encoding.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
package openapi
import (
"github.com/chanced/openapi/yamlutil"
)
// Encoding definition applied to a single schema property.
type Encoding struct {
// The Content-Type for encoding a specific property. Default value depends
// on the property type:
//
// - for object - application/json;
// - for array – the default is defined based on the inner type;
// - for all other cases the default is application/octet-stream.
// The value can be a specific media type (e.g. application/json), a
// wildcard media type (e.g. image/*), or a comma-separated list of the two
// types.
ContentType string `json:"contentType,omitempty"`
// A map allowing additional information to be provided as headers, for
// example Content-Disposition. Content-Type is described separately and
// SHALL be ignored in this section. This property SHALL be ignored if the
// request body media type is not a multipart.
Headers Headers `json:"headers,omitempty"`
// Describes how a specific property value will be serialized depending on
// its type. See Parameter Object for details on the style property. The
// behavior follows the same values as query parameters, including default
// values. This property SHALL be ignored if the request body media type is
// not application/x-www-form-urlencoded or multipart/form-data. If a value
// is explicitly defined, then the value of contentType (implicit or
// explicit) SHALL be ignored.
Style Style `json:"style,omitempty"`
// When this is true, property values of type array or object generate
// separate parameters for each value of the array, or key-value-pair of the
// map. For other types of properties this property has no effect. When
// style is form, the default value is true. For all other styles, the
// default value is false. This property SHALL be ignored if the request
// body media type is not application/x-www-form-urlencoded or
// multipart/form-data. If a value is explicitly defined, then the value of
// contentType (implicit or explicit) SHALL be ignored.
Explode *bool `json:"explode,omitempty"`
// Determines whether the parameter value SHOULD allow reserved characters,
// as defined by RFC3986 :/?#[]@!$&'()*+,;= to be included without
// percent-encoding. The default value is false. This property SHALL be
// ignored if the request body media type is not
// application/x-www-form-urlencoded or multipart/form-data. If a value is
// explicitly defined, then the value of contentType (implicit or explicit)
// SHALL be ignored.
AllowReserved *bool `json:"allowReserved,omitempty"`
Extensions `json:"-"`
}
type encoding Encoding
// MarshalJSON marshals e into JSON
func (e Encoding) MarshalJSON() ([]byte, error) {
return marshalExtendedJSON(encoding(e))
}
// UnmarshalJSON unmarshals json into e
func (e *Encoding) UnmarshalJSON(data []byte) error {
v := encoding{}
if err := unmarshalExtendedJSON(data, &v); err != nil {
return err
}
*e = Encoding(v)
return nil
}
// MarshalYAML marshals YAML
func (e Encoding) MarshalYAML() (interface{}, error) {
return yamlutil.Marshal(e)
}
// UnmarshalYAML unmarshals YAML
func (e *Encoding) UnmarshalYAML(unmarshal func(interface{}) error) error {
return yamlutil.Unmarshal(unmarshal, e)
}
// Encodings is a map between a property name and its encoding information. The
// key, being the property name, MUST exist in the schema as a property. The
// encoding object SHALL only apply to requestBody objects when the media type
// is multipart or application/x-www-form-urlencoded.
type Encodings map[string]*Encoding