-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptions_payload.go
35 lines (31 loc) · 1.19 KB
/
options_payload.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
package chioas
// OptionsMethodPayloadBuilder is an interface that can be provided to Definition.OptionsMethodPayloadBuilder and
// allows automatically created OPTIONS methods to return a body payload
type OptionsMethodPayloadBuilder interface {
BuildPayload(path string, pathDef *Path, def *Definition) (data []byte, headers map[string]string)
}
// NewRootOptionsMethodPayloadBuilder provides an OptionsMethodPayloadBuilder that can be used for Definition.OptionsMethodPayloadBuilder
// and provides the OPTIONS payload body on API root as the OAS spec
func NewRootOptionsMethodPayloadBuilder() OptionsMethodPayloadBuilder {
return &rootOptionsPayload{}
}
type rootOptionsPayload struct{}
func (r *rootOptionsPayload) BuildPayload(path string, pathDef *Path, def *Definition) (data []byte, headers map[string]string) {
data = make([]byte, 0)
headers = map[string]string{}
if path == root {
if def.DocOptions.AsJson {
headers[hdrContentType] = contentTypeJson
} else {
headers[hdrContentType] = contentTypeYaml
}
if def.DocOptions.specData != nil {
data = def.DocOptions.specData
} else if def.DocOptions.AsJson {
data, _ = def.AsJson()
} else {
data, _ = def.AsYaml()
}
}
return
}