@@ -25,8 +25,8 @@ pub fn summary(req: &mut dyn RequestExt) -> EndpointResult {
2525 use crate :: schema:: crates:: dsl:: * ;
2626
2727 let conn = req. db_read_only ( ) ?;
28- let num_crates = crates. count ( ) . get_result ( & * conn) ?;
29- let num_downloads = metadata:: table
28+ let num_crates: i64 = crates. count ( ) . get_result ( & * conn) ?;
29+ let num_downloads: i64 = metadata:: table
3030 . select ( metadata:: total_downloads)
3131 . get_result ( & * conn) ?;
3232
@@ -89,34 +89,23 @@ pub fn summary(req: &mut dyn RequestExt) -> EndpointResult {
8989 . load ( & * conn) ?
9090 . into_iter ( )
9191 . map ( Keyword :: into)
92- . collect ( ) ;
92+ . collect :: < Vec < EncodableKeyword > > ( ) ;
9393
9494 let popular_categories = Category :: toplevel ( & conn, "crates" , 10 , 0 ) ?
9595 . into_iter ( )
9696 . map ( Category :: into)
97- . collect ( ) ;
98-
99- #[ derive( Serialize ) ]
100- struct R {
101- num_downloads : i64 ,
102- num_crates : i64 ,
103- new_crates : Vec < EncodableCrate > ,
104- most_downloaded : Vec < EncodableCrate > ,
105- most_recently_downloaded : Vec < EncodableCrate > ,
106- just_updated : Vec < EncodableCrate > ,
107- popular_keywords : Vec < EncodableKeyword > ,
108- popular_categories : Vec < EncodableCategory > ,
109- }
110- Ok ( req. json ( & R {
111- num_downloads,
112- num_crates,
113- new_crates : encode_crates ( new_crates) ?,
114- most_downloaded : encode_crates ( most_downloaded) ?,
115- most_recently_downloaded : encode_crates ( most_recently_downloaded) ?,
116- just_updated : encode_crates ( just_updated) ?,
117- popular_keywords,
118- popular_categories,
119- } ) )
97+ . collect :: < Vec < EncodableCategory > > ( ) ;
98+
99+ Ok ( req. json ( & json ! ( {
100+ "num_downloads" : num_downloads,
101+ "num_crates" : num_crates,
102+ "new_crates" : encode_crates( new_crates) ?,
103+ "most_downloaded" : encode_crates( most_downloaded) ?,
104+ "most_recently_downloaded" : encode_crates( most_recently_downloaded) ?,
105+ "just_updated" : encode_crates( just_updated) ?,
106+ "popular_keywords" : popular_keywords,
107+ "popular_categories" : popular_categories,
108+ } ) ) )
120109}
121110
122111/// Handles the `GET /crates/:crate_id` route.
@@ -167,16 +156,8 @@ pub fn show(req: &mut dyn RequestExt) -> EndpointResult {
167156 . load ( & * conn) ?;
168157 let top_versions = krate. top_versions ( & conn) ?;
169158
170- #[ derive( Serialize ) ]
171- struct R {
172- #[ serde( rename = "crate" ) ]
173- krate : EncodableCrate ,
174- versions : Vec < EncodableVersion > ,
175- keywords : Vec < EncodableKeyword > ,
176- categories : Vec < EncodableCategory > ,
177- }
178- Ok ( req. json ( & R {
179- krate : EncodableCrate :: from (
159+ Ok ( req. json ( & json ! ( {
160+ "crate" : EncodableCrate :: from(
180161 krate. clone( ) ,
181162 & top_versions,
182163 Some ( ids) ,
@@ -186,13 +167,13 @@ pub fn show(req: &mut dyn RequestExt) -> EndpointResult {
186167 false ,
187168 recent_downloads,
188169 ) ,
189- versions : versions_publishers_and_audit_actions
170+ " versions" : versions_publishers_and_audit_actions
190171 . into_iter( )
191172 . map( |( v, pb, aas) | EncodableVersion :: from( v, & krate. name, pb, aas) )
192- . collect ( ) ,
193- keywords : kws. into_iter ( ) . map ( Keyword :: into) . collect ( ) ,
194- categories : cats. into_iter ( ) . map ( Category :: into) . collect ( ) ,
195- } ) )
173+ . collect:: < Vec <_>> ( ) ,
174+ " keywords" : kws. into_iter( ) . map( Keyword :: into) . collect:: < Vec < EncodableKeyword >> ( ) ,
175+ " categories" : cats. into_iter( ) . map( Category :: into) . collect:: < Vec < EncodableCategory >> ( ) ,
176+ } ) ) )
196177}
197178
198179/// Handles the `GET /crates/:crate_id/:version/readme` route.
@@ -207,11 +188,7 @@ pub fn readme(req: &mut dyn RequestExt) -> EndpointResult {
207188 . readme_location ( crate_name, version) ;
208189
209190 if req. wants_json ( ) {
210- #[ derive( Serialize ) ]
211- struct R {
212- url : String ,
213- }
214- Ok ( req. json ( & R { url : redirect_url } ) )
191+ Ok ( req. json ( & json ! ( { "url" : redirect_url } ) ) )
215192 } else {
216193 Ok ( req. redirect ( redirect_url) )
217194 }
@@ -242,13 +219,9 @@ pub fn versions(req: &mut dyn RequestExt) -> EndpointResult {
242219 . into_iter ( )
243220 . zip ( VersionOwnerAction :: for_versions ( & conn, & versions) ?. into_iter ( ) )
244221 . map ( |( ( v, pb) , aas) | EncodableVersion :: from ( v, crate_name, pb, aas) )
245- . collect ( ) ;
222+ . collect :: < Vec < _ > > ( ) ;
246223
247- #[ derive( Serialize ) ]
248- struct R {
249- versions : Vec < EncodableVersion > ,
250- }
251- Ok ( req. json ( & R { versions } ) )
224+ Ok ( req. json ( & json ! ( { "versions" : versions } ) ) )
252225}
253226
254227/// Handles the `GET /crates/:crate_id/reverse_dependencies` route.
@@ -288,21 +261,11 @@ pub fn reverse_dependencies(req: &mut dyn RequestExt) -> EndpointResult {
288261 . map ( |( ( version, krate_name, published_by) , actions) | {
289262 EncodableVersion :: from ( version, & krate_name, published_by, actions)
290263 } )
291- . collect ( ) ;
264+ . collect :: < Vec < _ > > ( ) ;
292265
293- #[ derive( Serialize ) ]
294- struct R {
295- dependencies : Vec < EncodableDependency > ,
296- versions : Vec < EncodableVersion > ,
297- meta : Meta ,
298- }
299- #[ derive( Serialize ) ]
300- struct Meta {
301- total : i64 ,
302- }
303- Ok ( req. json ( & R {
304- dependencies : rev_deps,
305- versions,
306- meta : Meta { total } ,
307- } ) )
266+ Ok ( req. json ( & json ! ( {
267+ "dependencies" : rev_deps,
268+ "versions" : versions,
269+ "meta" : { "total" : total } ,
270+ } ) ) )
308271}
0 commit comments