-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathtypes.go
276 lines (222 loc) · 5.15 KB
/
types.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
package v3io
import (
"encoding/xml"
"github.com/valyala/fasthttp"
)
//
// Request / response
//
type Request struct {
ID uint64
// the container on which the request was performed (if applicable)
container *Container
// the session on which the request was performed (if applicable)
session *Session
// holds the input (e.g. ListBucketInput, GetItemInput)
Input interface{}
// a user supplied context
Context interface{}
// the channel to which the response must be posted
responseChan chan *Response
// pointer to container
requestResponse *RequestResponse
// Request time
SendTimeNanoseconds int64
}
type Response struct {
response *fasthttp.Response
// hold a decoded output, if any
Output interface{}
// Equal to the ID of request
ID uint64
// holds the error for async responses
Error error
// a user supplied context
Context interface{}
// pointer to container
requestResponse *RequestResponse
}
func (r *Response) Release() {
if r.response != nil {
fasthttp.ReleaseResponse(r.response)
}
}
func (r *Response) Body() []byte {
return r.response.Body()
}
func (r *Response) Request() *Request {
return &r.requestResponse.Request
}
// holds both a request and response
type RequestResponse struct {
Request Request
Response Response
}
type ListBucketInput struct {
Path string
}
type Content struct {
XMLName xml.Name `xml:"Contents"`
Key string `xml:"Key"`
Size int `xml:"Size"`
LastSequenceId int `xml:"LastSequenceId"`
ETag string `xml:"ETag"`
LastModified string `xml:"LastModified"`
}
type CommonPrefix struct {
XMLName xml.Name `xml:"CommonPrefixes"`
Prefix string `xml:"Prefix"`
}
type ListBucketOutput struct {
XMLName xml.Name `xml:"ListBucketResult"`
Name string `xml:"Name"`
NextMarker string `xml:"NextMarker"`
MaxKeys string `xml:"MaxKeys"`
Contents []Content `xml:"Contents"`
CommonPrefixes []CommonPrefix `xml:"CommonPrefixes"`
}
type ListAllInput struct {
}
type ListAllOutput struct {
XMLName xml.Name `xml:"ListAllMyBucketsResult"`
Owner interface{} `xml:"Owner"`
Buckets Buckets `xml:"Buckets"`
}
type Buckets struct {
XMLName xml.Name `xml:"Buckets"`
Bucket []Bucket `xml:"Bucket"`
}
type Bucket struct {
XMLName xml.Name `xml:"Bucket"`
Name string `xml:"Name"`
CreationDate string `xml:"CreationDate"`
Id int `xml:"Id"`
}
type GetObjectInput struct {
Path string
}
type PutObjectInput struct {
Path string
Body []byte
}
type DeleteObjectInput struct {
Path string
}
type SetObjectInput struct {
Path string
ValidationModifiedTimeSec uint64
ValidationModifiedTimeNsec uint64
ValidationOperation string
ValidationMask uint64
ValidationValue uint64
SetOperation string
DataMask uint64
DataValue uint64
}
type PutItemInput struct {
Path string
Condition string
Attributes map[string]interface{}
}
type PutItemsInput struct {
Path string
Condition string
Items map[string]map[string]interface{}
}
type PutItemsOutput struct {
Success bool
Errors map[string]error
}
type UpdateItemInput struct {
Path string
Attributes map[string]interface{}
Expression *string
Condition string
}
type GetItemInput struct {
Path string
AttributeNames []string
}
type GetItemOutput struct {
Item Item
}
type GetItemsInput struct {
Path string
AttributeNames []string
Filter string
Marker string
ShardingKey string
Limit int
Segment int
TotalSegments int
SortKeyRangeStart string
SortKeyRangeEnd string
}
type GetItemsOutput struct {
Last bool
NextMarker string
Items []Item
}
type CreateStreamInput struct {
Path string
ShardCount int
RetentionPeriodHours int
}
type StreamRecord struct {
ShardID *int
Data []byte
ClientInfo []byte
PartitionKey string
}
type PutRecordsInput struct {
Path string
Records []*StreamRecord
}
type PutRecordResult struct {
SequenceNumber int
ShardID int `json:"ShardId"`
ErrorCode int
ErrorMessage string
}
type PutRecordsOutput struct {
FailedRecordCount int
Records []PutRecordResult
}
type DeleteStreamInput struct {
Path string
}
type SeekShardInputType int
const (
SeekShardInputTypeTime SeekShardInputType = iota
SeekShardInputTypeSequence
SeekShardInputTypeLatest
SeekShardInputTypeEarliest
)
type SeekShardInput struct {
Path string
Type SeekShardInputType
StartingSequenceNumber int
Timestamp int
}
type SeekShardOutput struct {
Location string
}
type GetRecordsInput struct {
Path string
Location string
Limit int
}
type GetRecordsResult struct {
ArrivalTimeSec int
ArrivalTimeNSec int
SequenceNumber int
ClientInfo []byte
PartitionKey string
Data []byte
}
type GetRecordsOutput struct {
NextLocation string
MSecBehindLatest int
RecordsBehindLatest int
Records []GetRecordsResult
}