@@ -91,7 +91,28 @@ pub(crate) async fn build_list_json_handler(
91
91
Ok ( (
92
92
Extension ( CachePolicy :: NoStoreMustRevalidate ) ,
93
93
[ ( 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
+ ) ,
95
116
)
96
117
. into_response ( ) )
97
118
}
@@ -123,6 +144,7 @@ async fn get_builds(
123
144
124
145
#[ cfg( test) ]
125
146
mod tests {
147
+ use super :: BuildStatus ;
126
148
use crate :: {
127
149
test:: { assert_cache_control, wrapper, FakeBuild } ,
128
150
web:: cache:: CachePolicy ,
@@ -189,13 +211,19 @@ mod tests {
189
211
FakeBuild :: default ( )
190
212
. rustc_version( "rustc (blabla 2021-01-01)" )
191
213
. 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" ) ,
192
218
] )
193
219
. create ( ) ?;
194
220
195
221
let response = env. frontend ( ) . get ( "/crate/foo/0.1.0/builds.json" ) . send ( ) ?;
196
222
assert_cache_control ( & response, CachePolicy :: NoStoreMustRevalidate , & env. config ( ) ) ;
197
223
let value: serde_json:: Value = serde_json:: from_str ( & response. text ( ) ?) ?;
198
224
225
+ assert_eq ! ( value. as_array( ) . unwrap( ) . len( ) , 3 ) ;
226
+
199
227
assert_eq ! ( value. pointer( "/0/build_status" ) , Some ( & true . into( ) ) ) ;
200
228
assert_eq ! (
201
229
value. pointer( "/0/docsrs_version" ) ,
0 commit comments