Skip to content

Commit 2421d44

Browse files
authored
Responses Object MUST contain at least one response code (#226)
1 parent ac200a1 commit 2421d44

6 files changed

Lines changed: 500 additions & 40 deletions

File tree

openapi3/operation.go

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -71,14 +71,12 @@ func (operation *Operation) AddResponse(status int, response *Response) {
7171
responses = NewResponses()
7272
operation.Responses = responses
7373
}
74-
if status == 0 {
75-
responses["default"] = &ResponseRef{
76-
Value: response,
77-
}
78-
} else {
79-
responses[strconv.FormatInt(int64(status), 10)] = &ResponseRef{
80-
Value: response,
81-
}
74+
code := "default"
75+
if status != 0 {
76+
code = strconv.FormatInt(int64(status), 10)
77+
}
78+
responses[code] = &ResponseRef{
79+
Value: response,
8280
}
8381
}
8482

openapi3/response.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import (
1212
type Responses map[string]*ResponseRef
1313

1414
func NewResponses() Responses {
15-
return make(Responses, 8)
15+
r := make(Responses)
16+
r["default"] = &ResponseRef{Value: NewResponse().WithDescription("")}
17+
return r
1618
}
1719

1820
func (responses Responses) Default() *ResponseRef {
@@ -24,6 +26,9 @@ func (responses Responses) Get(status int) *ResponseRef {
2426
}
2527

2628
func (responses Responses) Validate(c context.Context) error {
29+
if len(responses) == 0 {
30+
return errors.New("The Responses Object MUST contain at least one response code")
31+
}
2732
for _, v := range responses {
2833
if err := v.Validate(c); err != nil {
2934
return err

0 commit comments

Comments
 (0)