@@ -91,7 +91,28 @@ pub(crate) async fn build_list_json_handler(
9191 Ok ( (
9292 Extension ( CachePolicy :: NoStoreMustRevalidate ) ,
9393 [ ( ACCESS_CONTROL_ALLOW_ORIGIN , "*" ) ] ,
94- Json ( get_builds ( & mut conn, & name, & version) . await ?) ,
94+ Json (
95+ get_builds ( & mut conn, & name, & version)
96+ . await ?
97+ . iter ( )
98+ . filter_map ( |build| {
99+ // for backwards compatibility in this API, we
100+ // * filter out in-progress builds
101+ // * convert the build status to a boolean
102+ if build. build_status != BuildStatus :: InProgress {
103+ Some ( serde_json:: json!( {
104+ "id" : build. id,
105+ "rustc_version" : build. rustc_version,
106+ "docsrs_version" : build. docsrs_version,
107+ "build_status" : build. build_status. is_success( ) ,
108+ "build_time" : build. build_time,
109+ } ) )
110+ } else {
111+ None
112+ }
113+ } )
114+ . collect :: < Vec < _ > > ( ) ,
115+ ) ,
95116 )
96117 . into_response ( ) )
97118}
@@ -123,6 +144,7 @@ async fn get_builds(
123144
124145#[ cfg( test) ]
125146mod tests {
147+ use super :: BuildStatus ;
126148 use crate :: {
127149 test:: { assert_cache_control, wrapper, FakeBuild } ,
128150 web:: cache:: CachePolicy ,
@@ -189,13 +211,19 @@ mod tests {
189211 FakeBuild :: default ( )
190212 . rustc_version( "rustc (blabla 2021-01-01)" )
191213 . docsrs_version( "docs.rs 3.0.0" ) ,
214+ FakeBuild :: default ( )
215+ . build_status( BuildStatus :: InProgress )
216+ . rustc_version( "rustc (blabla 2022-01-01)" )
217+ . docsrs_version( "docs.rs 4.0.0" ) ,
192218 ] )
193219 . create ( ) ?;
194220
195221 let response = env. frontend ( ) . get ( "/crate/foo/0.1.0/builds.json" ) . send ( ) ?;
196222 assert_cache_control ( & response, CachePolicy :: NoStoreMustRevalidate , & env. config ( ) ) ;
197223 let value: serde_json:: Value = serde_json:: from_str ( & response. text ( ) ?) ?;
198224
225+ assert_eq ! ( value. as_array( ) . unwrap( ) . len( ) , 3 ) ;
226+
199227 assert_eq ! ( value. pointer( "/0/build_status" ) , Some ( & true . into( ) ) ) ;
200228 assert_eq ! (
201229 value. pointer( "/0/docsrs_version" ) ,
0 commit comments