@@ -17,20 +17,14 @@ use rocket::State;
17
17
18
18
use crate :: endpoints:: { HttpErrorJson , ServerState } ;
19
19
20
- use aw_datastore:: DatastoreError ;
21
-
22
20
#[ get( "/" ) ]
23
21
pub fn buckets_get (
24
22
state : State < ServerState > ,
25
23
) -> Result < Json < HashMap < String , Bucket > > , HttpErrorJson > {
26
24
let datastore = endpoints_get_lock ! ( state. datastore) ;
27
25
match datastore. get_buckets ( ) {
28
26
Ok ( bucketlist) => Ok ( Json ( bucketlist) ) ,
29
- Err ( e) => {
30
- let err_msg = format ! ( "Unexpected error: {:?}" , e) ;
31
- warn ! ( "{}" , err_msg) ;
32
- Err ( HttpErrorJson :: new ( Status :: InternalServerError , err_msg) )
33
- }
27
+ Err ( err) => Err ( err. into ( ) ) ,
34
28
}
35
29
}
36
30
@@ -42,17 +36,7 @@ pub fn bucket_get(
42
36
let datastore = endpoints_get_lock ! ( state. datastore) ;
43
37
match datastore. get_bucket ( & bucket_id) {
44
38
Ok ( bucket) => Ok ( Json ( bucket) ) ,
45
- Err ( e) => match e {
46
- DatastoreError :: NoSuchBucket => Err ( HttpErrorJson :: new (
47
- Status :: NotFound ,
48
- "The requested bucket does not exist" . to_string ( ) ,
49
- ) ) ,
50
- _ => {
51
- let err_msg = format ! ( "Unexpected error: {:?}" , e) ;
52
- warn ! ( "{}" , err_msg) ;
53
- Err ( HttpErrorJson :: new ( Status :: InternalServerError , err_msg) )
54
- }
55
- } ,
39
+ Err ( e) => Err ( e. into ( ) ) ,
56
40
}
57
41
}
58
42
@@ -66,34 +50,11 @@ pub fn bucket_new(
66
50
if bucket. id != bucket_id {
67
51
bucket. id = bucket_id;
68
52
}
69
- // Cannot re-use endpoints_get_lock!() here because it returns Err(Status) on failure and this
70
- // function returns a Response
71
- let datastore = match state. datastore . lock ( ) {
72
- Ok ( ds) => ds,
73
- Err ( e) => {
74
- warn ! ( "Taking datastore lock failed, returning 504: {}" , e) ;
75
- return Err ( HttpErrorJson :: new (
76
- Status :: ServiceUnavailable ,
77
- "Takind datastore lock failed" . to_string ( ) ,
78
- ) ) ;
79
- }
80
- } ;
53
+ let datastore = endpoints_get_lock ! ( state. datastore) ;
81
54
let ret = datastore. create_bucket ( & bucket) ;
82
55
match ret {
83
56
Ok ( _) => Ok ( ( ) ) ,
84
- Err ( err) => match err {
85
- DatastoreError :: BucketAlreadyExists => Err ( HttpErrorJson :: new (
86
- Status :: NotModified ,
87
- "Bucket already exists" . to_string ( ) ,
88
- ) ) ,
89
- _ => {
90
- warn ! ( "Unexpected error: {:?}" , err) ;
91
- Err ( HttpErrorJson :: new (
92
- Status :: InternalServerError ,
93
- format ! ( "{:?}" , err) ,
94
- ) )
95
- }
96
- } ,
57
+ Err ( err) => Err ( err. into ( ) ) ,
97
58
}
98
59
}
99
60
@@ -137,17 +98,7 @@ pub fn bucket_events_get(
137
98
let res = datastore. get_events ( & bucket_id, starttime, endtime, limit) ;
138
99
match res {
139
100
Ok ( events) => Ok ( Json ( events) ) ,
140
- Err ( err) => match err {
141
- DatastoreError :: NoSuchBucket => Err ( HttpErrorJson :: new (
142
- Status :: NotFound ,
143
- "The requested bucket does not exist" . to_string ( ) ,
144
- ) ) ,
145
- e => {
146
- let err_msg = format ! ( "Failed to fetch events: {:?}" , e) ;
147
- warn ! ( "{}" , err_msg) ;
148
- Err ( HttpErrorJson :: new ( Status :: InternalServerError , err_msg) )
149
- }
150
- } ,
101
+ Err ( err) => Err ( err. into ( ) ) ,
151
102
}
152
103
}
153
104
@@ -161,17 +112,7 @@ pub fn bucket_events_create(
161
112
let res = datastore. insert_events ( & bucket_id, & events) ;
162
113
match res {
163
114
Ok ( events) => Ok ( Json ( events) ) ,
164
- Err ( e) => match e {
165
- DatastoreError :: NoSuchBucket => Err ( HttpErrorJson :: new (
166
- Status :: NotFound ,
167
- "The requested bucket does not exist" . to_string ( ) ,
168
- ) ) ,
169
- e => {
170
- let err_msg = format ! ( "Failed to create event(s): {:?}" , e) ;
171
- warn ! ( "{}" , err_msg) ;
172
- Err ( HttpErrorJson :: new ( Status :: InternalServerError , err_msg) )
173
- }
174
- } ,
115
+ Err ( err) => Err ( err. into ( ) ) ,
175
116
}
176
117
}
177
118
@@ -190,17 +131,7 @@ pub fn bucket_events_heartbeat(
190
131
let datastore = endpoints_get_lock ! ( state. datastore) ;
191
132
match datastore. heartbeat ( & bucket_id, heartbeat, pulsetime) {
192
133
Ok ( e) => Ok ( Json ( e) ) ,
193
- Err ( err) => match err {
194
- DatastoreError :: NoSuchBucket => Err ( HttpErrorJson :: new (
195
- Status :: NotFound ,
196
- "The requested bucket does not exist" . to_string ( ) ,
197
- ) ) ,
198
- err => {
199
- let err_msg = format ! ( "Heartbeat failed: {:?}" , err) ;
200
- warn ! ( "{}" , err_msg) ;
201
- Err ( HttpErrorJson :: new ( Status :: InternalServerError , err_msg) )
202
- }
203
- } ,
134
+ Err ( err) => Err ( err. into ( ) ) ,
204
135
}
205
136
}
206
137
@@ -213,17 +144,7 @@ pub fn bucket_event_count(
213
144
let res = datastore. get_event_count ( & bucket_id, None , None ) ;
214
145
match res {
215
146
Ok ( eventcount) => Ok ( Json ( eventcount as u64 ) ) ,
216
- Err ( e) => match e {
217
- DatastoreError :: NoSuchBucket => Err ( HttpErrorJson :: new (
218
- Status :: NotFound ,
219
- "The requested bucket does not exist" . to_string ( ) ,
220
- ) ) ,
221
- e => {
222
- let err_msg = format ! ( "Failed to count events: {:?}" , e) ;
223
- warn ! ( "{}" , err_msg) ;
224
- Err ( HttpErrorJson :: new ( Status :: InternalServerError , err_msg) )
225
- }
226
- } ,
147
+ Err ( err) => Err ( err. into ( ) ) ,
227
148
}
228
149
}
229
150
@@ -236,17 +157,7 @@ pub fn bucket_events_delete_by_id(
236
157
let datastore = endpoints_get_lock ! ( state. datastore) ;
237
158
match datastore. delete_events_by_id ( & bucket_id, vec ! [ event_id] ) {
238
159
Ok ( _) => Ok ( ( ) ) ,
239
- Err ( err) => match err {
240
- DatastoreError :: NoSuchBucket => Err ( HttpErrorJson :: new (
241
- Status :: NotFound ,
242
- "The requested bucket does not exist" . to_string ( ) ,
243
- ) ) ,
244
- err => {
245
- let err_msg = format ! ( "Delete events by id failed: {:?}" , err) ;
246
- warn ! ( "{}" , err_msg) ;
247
- Err ( HttpErrorJson :: new ( Status :: InternalServerError , err_msg) )
248
- }
249
- } ,
160
+ Err ( err) => Err ( err. into ( ) ) ,
250
161
}
251
162
}
252
163
@@ -261,19 +172,7 @@ pub fn bucket_export(
261
172
} ;
262
173
let mut bucket = match datastore. get_bucket ( & bucket_id) {
263
174
Ok ( bucket) => bucket,
264
- Err ( err) => match err {
265
- DatastoreError :: NoSuchBucket => {
266
- return Err ( HttpErrorJson :: new (
267
- Status :: NotFound ,
268
- "The requested bucket does not exist" . to_string ( ) ,
269
- ) )
270
- }
271
- e => {
272
- let err_msg = format ! ( "Failed to fetch events: {:?}" , e) ;
273
- warn ! ( "{}" , err_msg) ;
274
- return Err ( HttpErrorJson :: new ( Status :: InternalServerError , err_msg) ) ;
275
- }
276
- } ,
175
+ Err ( err) => return Err ( err. into ( ) ) ,
277
176
} ;
278
177
bucket. events = Some (
279
178
datastore
@@ -298,16 +197,6 @@ pub fn bucket_delete(bucket_id: String, state: State<ServerState>) -> Result<(),
298
197
let datastore = endpoints_get_lock ! ( state. datastore) ;
299
198
match datastore. delete_bucket ( & bucket_id) {
300
199
Ok ( _) => Ok ( ( ) ) ,
301
- Err ( e) => match e {
302
- DatastoreError :: NoSuchBucket => Err ( HttpErrorJson :: new (
303
- Status :: NotFound ,
304
- "The requested bucket does not exist" . to_string ( ) ,
305
- ) ) ,
306
- e => {
307
- let err_msg = format ! ( "Failed to delete bucket: {:?}" , e) ;
308
- warn ! ( "{}" , err_msg) ;
309
- Err ( HttpErrorJson :: new ( Status :: InternalServerError , err_msg) )
310
- }
311
- } ,
200
+ Err ( err) => Err ( err. into ( ) ) ,
312
201
}
313
202
}
0 commit comments