@@ -85,7 +85,28 @@ pub(crate) async fn build_list_json_handler(
8585 Ok ( (
8686 Extension ( CachePolicy :: NoStoreMustRevalidate ) ,
8787 [ ( ACCESS_CONTROL_ALLOW_ORIGIN , "*" ) ] ,
88- Json ( get_builds ( & mut conn, & name, & version) . await ?) ,
88+ Json (
89+ get_builds ( & mut conn, & name, & version)
90+ . await ?
91+ . iter ( )
92+ . filter_map ( |build| {
93+ // for backwards compatibility in this API, we
94+ // * filter out in-progress builds
95+ // * convert the build status to a boolean
96+ if build. build_status != BuildStatus :: InProgress {
97+ Some ( serde_json:: json!( {
98+ "id" : build. id,
99+ "rustc_version" : build. rustc_version,
100+ "docsrs_version" : build. docsrs_version,
101+ "build_status" : build. build_status. is_success( ) ,
102+ "build_time" : build. build_time,
103+ } ) )
104+ } else {
105+ None
106+ }
107+ } )
108+ . collect :: < Vec < _ > > ( ) ,
109+ ) ,
89110 )
90111 . into_response ( ) )
91112}
@@ -117,6 +138,7 @@ async fn get_builds(
117138
118139#[ cfg( test) ]
119140mod tests {
141+ use super :: BuildStatus ;
120142 use crate :: {
121143 test:: { assert_cache_control, wrapper, FakeBuild } ,
122144 web:: cache:: CachePolicy ,
@@ -183,13 +205,19 @@ mod tests {
183205 FakeBuild :: default ( )
184206 . rustc_version( "rustc (blabla 2021-01-01)" )
185207 . docsrs_version( "docs.rs 3.0.0" ) ,
208+ FakeBuild :: default ( )
209+ . build_status( BuildStatus :: InProgress )
210+ . rustc_version( "rustc (blabla 2022-01-01)" )
211+ . docsrs_version( "docs.rs 4.0.0" ) ,
186212 ] )
187213 . create ( ) ?;
188214
189215 let response = env. frontend ( ) . get ( "/crate/foo/0.1.0/builds.json" ) . send ( ) ?;
190216 assert_cache_control ( & response, CachePolicy :: NoStoreMustRevalidate , & env. config ( ) ) ;
191217 let value: serde_json:: Value = serde_json:: from_str ( & response. text ( ) ?) ?;
192218
219+ assert_eq ! ( value. as_array( ) . unwrap( ) . len( ) , 3 ) ;
220+
193221 assert_eq ! ( value. pointer( "/0/build_status" ) , Some ( & true . into( ) ) ) ;
194222 assert_eq ! (
195223 value. pointer( "/0/docsrs_version" ) ,
0 commit comments