@@ -2,6 +2,7 @@ package openapi3
2
2
3
3
import (
4
4
"context"
5
+ "encoding/json"
5
6
"fmt"
6
7
7
8
"github.com/go-openapi/jsonpointer"
@@ -12,6 +13,16 @@ type Callbacks struct {
12
13
om * orderedmap.OrderedMap [string , * CallbackRef ]
13
14
}
14
15
16
+ // MarshalJSON returns the JSON encoding of Callbacks.
17
+ func (c * Callbacks ) MarshalJSON () ([]byte , error ) {
18
+ return c .om .MarshalJSON ()
19
+ }
20
+
21
+ // UnmarshalJSON sets Callbacks to a copy of data.
22
+ func (c * Callbacks ) UnmarshalJSON (data []byte ) error {
23
+ return json .Unmarshal (data , & c .om )
24
+ }
25
+
15
26
func (c * Callbacks ) Value (key string ) * CallbackRef {
16
27
// if c == nil || c.om == nil {
17
28
// return nil
@@ -42,7 +53,8 @@ func (c *Callbacks) Iter() *callbacksKV {
42
53
type callbacksKV orderedmap.Pair [string , * CallbackRef ] //FIXME: pub?
43
54
44
55
func (pair * callbacksKV ) Next () * callbacksKV {
45
- return pair .Next ()
56
+ ompair := (* orderedmap.Pair [string , * CallbackRef ])(pair )
57
+ return (* callbacksKV )(ompair .Next ())
46
58
}
47
59
48
60
var _ jsonpointer.JSONPointable = (* Callbacks )(nil )
@@ -63,14 +75,58 @@ func (c *Callbacks) JSONLookup(token string) (interface{}, error) {
63
75
// Callback is specified by OpenAPI/Swagger standard version 3.
64
76
// See https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.3.md#callbackObject
65
77
type Callback struct {
66
- orderedmap.OrderedMap [string , * PathItem ]
78
+ om * orderedmap.OrderedMap [string , * PathItem ]
79
+ }
80
+
81
+ // MarshalJSON returns the JSON encoding of Callback.
82
+ func (callback * Callback ) MarshalJSON () ([]byte , error ) {
83
+ return callback .om .MarshalJSON ()
84
+ }
85
+
86
+ // UnmarshalJSON sets Callback to a copy of data.
87
+ func (callback * Callback ) UnmarshalJSON (data []byte ) error {
88
+ return json .Unmarshal (data , & callback .om )
89
+ }
90
+
91
+ func (callback * Callback ) Value (key string ) * PathItem {
92
+ // if callback == nil || callback.om == nil {
93
+ // return nil
94
+ // }
95
+ return callback .om .Value (key )
96
+ }
97
+
98
+ func (callback * Callback ) Set (key string , value * PathItem ) {
99
+ // if callback != nil || callback.om != nil {
100
+ _ , _ = callback .om .Set (key , value )
101
+ // }
102
+ }
103
+
104
+ func (callback * Callback ) Len () int {
105
+ if callback == nil || callback .om == nil {
106
+ return 0
107
+ }
108
+ return callback .om .Len ()
109
+ }
110
+
111
+ func (callback * Callback ) Iter () * callbackKV {
112
+ if callback == nil || callback .om == nil {
113
+ return nil
114
+ }
115
+ return (* callbackKV )(callback .om .Oldest ())
116
+ }
117
+
118
+ type callbackKV orderedmap.Pair [string , * PathItem ] //FIXME: pub?
119
+
120
+ func (pair * callbackKV ) Next () * callbackKV {
121
+ ompair := (* orderedmap.Pair [string , * PathItem ])(pair )
122
+ return (* callbackKV )(ompair .Next ())
67
123
}
68
124
69
125
// Validate returns an error if Callback does not comply with the OpenAPI spec.
70
126
func (callback * Callback ) Validate (ctx context.Context , opts ... ValidationOption ) error {
71
127
ctx = WithValidationOptions (ctx , opts ... )
72
128
73
- for pair := callback .Oldest (); pair != nil ; pair = pair .Next () {
129
+ for pair := callback .Iter (); pair != nil ; pair = pair .Next () {
74
130
if err := pair .Value .Validate (ctx ); err != nil {
75
131
return err
76
132
}
0 commit comments