4
4
//!
5
5
//! The responses are calculated in the server.rs file.
6
6
7
+ use serde:: de:: { DeserializeOwned , Error } ;
8
+ use serde:: Deserializer ;
9
+ use std:: fmt:: Formatter ;
10
+ use std:: marker:: PhantomData ;
7
11
use std:: result:: Result as StdResult ;
8
12
9
13
pub type ServerResult < T > = StdResult < T , String > ;
10
14
15
+ // Deserializes a comma separated list of GraphKind values
16
+ fn vec_from_comma_separated < ' de , T : DeserializeOwned , D > (
17
+ deserializer : D ,
18
+ ) -> Result < Vec < T > , D :: Error >
19
+ where
20
+ D : Deserializer < ' de > ,
21
+ {
22
+ struct CommaSeparatedVisitor < T > ( PhantomData < T > ) ;
23
+
24
+ impl < ' de , T : DeserializeOwned > serde:: de:: Visitor < ' de > for CommaSeparatedVisitor < T > {
25
+ type Value = Vec < T > ;
26
+
27
+ fn expecting ( & self , formatter : & mut Formatter ) -> std:: fmt:: Result {
28
+ formatter. write_str ( "comma separated list of GraphKind values" )
29
+ }
30
+
31
+ fn visit_str < E > ( self , v : & str ) -> Result < Self :: Value , E >
32
+ where
33
+ E : Error ,
34
+ {
35
+ v. split ( ',' )
36
+ . map ( |v| T :: deserialize ( serde:: de:: value:: StrDeserializer :: new ( v) ) )
37
+ . collect :: < Result < Vec < T > , _ > > ( )
38
+ }
39
+ }
40
+
41
+ deserializer. deserialize_str ( CommaSeparatedVisitor ( Default :: default ( ) ) )
42
+ }
43
+
11
44
pub mod info {
12
45
use database:: Date ;
13
46
use serde:: Serialize ;
@@ -112,11 +145,9 @@ pub mod graphs {
112
145
113
146
pub mod detail_graphs {
114
147
use crate :: api:: graphs:: { GraphKind , Series } ;
148
+ use crate :: api:: vec_from_comma_separated;
115
149
use collector:: Bound ;
116
- use serde:: de:: { DeserializeOwned , Error } ;
117
- use serde:: { Deserialize , Deserializer , Serialize } ;
118
- use std:: fmt:: Formatter ;
119
- use std:: marker:: PhantomData ;
150
+ use serde:: { Deserialize , Serialize } ;
120
151
121
152
#[ derive( Debug , PartialEq , Clone , Serialize , Deserialize ) ]
122
153
pub struct Request {
@@ -130,35 +161,6 @@ pub mod detail_graphs {
130
161
pub kinds : Vec < GraphKind > ,
131
162
}
132
163
133
- // Deserializes a comma separated list of GraphKind values
134
- fn vec_from_comma_separated < ' de , T : DeserializeOwned , D > (
135
- deserializer : D ,
136
- ) -> Result < Vec < T > , D :: Error >
137
- where
138
- D : Deserializer < ' de > ,
139
- {
140
- struct CommaSeparatedVisitor < T > ( PhantomData < T > ) ;
141
-
142
- impl < ' de , T : DeserializeOwned > serde:: de:: Visitor < ' de > for CommaSeparatedVisitor < T > {
143
- type Value = Vec < T > ;
144
-
145
- fn expecting ( & self , formatter : & mut Formatter ) -> std:: fmt:: Result {
146
- formatter. write_str ( "comma separated list of GraphKind values" )
147
- }
148
-
149
- fn visit_str < E > ( self , v : & str ) -> Result < Self :: Value , E >
150
- where
151
- E : Error ,
152
- {
153
- v. split ( ',' )
154
- . map ( |v| T :: deserialize ( serde:: de:: value:: StrDeserializer :: new ( v) ) )
155
- . collect :: < Result < Vec < T > , _ > > ( )
156
- }
157
- }
158
-
159
- deserializer. deserialize_str ( CommaSeparatedVisitor ( Default :: default ( ) ) )
160
- }
161
-
162
164
#[ derive( Debug , Serialize ) ]
163
165
pub struct Response {
164
166
pub commits : Vec < ( i64 , String ) > ,
@@ -203,11 +205,9 @@ pub mod detail_sections {
203
205
204
206
pub mod runtime_detail_graphs {
205
207
use crate :: api:: graphs:: { GraphKind , Series } ;
208
+ use crate :: api:: vec_from_comma_separated;
206
209
use collector:: Bound ;
207
- use serde:: de:: { DeserializeOwned , Error } ;
208
- use serde:: { Deserialize , Deserializer , Serialize } ;
209
- use std:: fmt:: Formatter ;
210
- use std:: marker:: PhantomData ;
210
+ use serde:: { Deserialize , Serialize } ;
211
211
212
212
#[ derive( Debug , PartialEq , Clone , Serialize , Deserialize ) ]
213
213
pub struct Request {
@@ -219,35 +219,6 @@ pub mod runtime_detail_graphs {
219
219
pub kinds : Vec < GraphKind > ,
220
220
}
221
221
222
- // Deserializes a comma separated list of GraphKind values
223
- fn vec_from_comma_separated < ' de , T : DeserializeOwned , D > (
224
- deserializer : D ,
225
- ) -> Result < Vec < T > , D :: Error >
226
- where
227
- D : Deserializer < ' de > ,
228
- {
229
- struct CommaSeparatedVisitor < T > ( PhantomData < T > ) ;
230
-
231
- impl < ' de , T : DeserializeOwned > serde:: de:: Visitor < ' de > for CommaSeparatedVisitor < T > {
232
- type Value = Vec < T > ;
233
-
234
- fn expecting ( & self , formatter : & mut Formatter ) -> std:: fmt:: Result {
235
- formatter. write_str ( "comma separated list of GraphKind values" )
236
- }
237
-
238
- fn visit_str < E > ( self , v : & str ) -> Result < Self :: Value , E >
239
- where
240
- E : Error ,
241
- {
242
- v. split ( ',' )
243
- . map ( |v| T :: deserialize ( serde:: de:: value:: StrDeserializer :: new ( v) ) )
244
- . collect :: < Result < Vec < T > , _ > > ( )
245
- }
246
- }
247
-
248
- deserializer. deserialize_str ( CommaSeparatedVisitor ( Default :: default ( ) ) )
249
- }
250
-
251
222
#[ derive( Debug , Serialize ) ]
252
223
pub struct Response {
253
224
pub commits : Vec < ( i64 , String ) > ,
0 commit comments