File tree Expand file tree Collapse file tree 2 files changed +20
-10
lines changed
crates/crates_io_og_image Expand file tree Collapse file tree 2 files changed +20
-10
lines changed Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ pub use error::OgImageError;
8
8
use crate :: formatting:: { serialize_bytes, serialize_number, serialize_optional_number} ;
9
9
use bytes:: Bytes ;
10
10
use crates_io_env_vars:: var;
11
+ use reqwest:: StatusCode ;
11
12
use serde:: Serialize ;
12
13
use std:: collections:: HashMap ;
13
14
use std:: path:: { Path , PathBuf } ;
@@ -252,19 +253,25 @@ impl OgImageGenerator {
252
253
} else {
253
254
debug ! ( url = %avatar, "Downloading avatar from URL: {avatar}" ) ;
254
255
// Download the avatar from the URL
255
- let response = client
256
- . get ( * avatar)
257
- . send ( )
258
- . await
259
- . map_err ( |err| OgImageError :: AvatarDownloadError {
256
+ let response = client. get ( * avatar) . send ( ) . await . map_err ( |err| {
257
+ OgImageError :: AvatarDownloadError {
260
258
url : avatar. to_string ( ) ,
261
259
source : err,
262
- } ) ?
263
- . error_for_status ( )
264
- . map_err ( |err| OgImageError :: AvatarDownloadError {
260
+ }
261
+ } ) ?;
262
+
263
+ let status = response. status ( ) ;
264
+ if status == StatusCode :: NOT_FOUND {
265
+ warn ! ( url = %avatar, "Avatar URL returned 404 Not Found" ) ;
266
+ continue ; // Skip this avatar if not found
267
+ }
268
+
269
+ if let Err ( err) = response. error_for_status_ref ( ) {
270
+ return Err ( OgImageError :: AvatarDownloadError {
265
271
url : avatar. to_string ( ) ,
266
272
source : err,
267
- } ) ?;
273
+ } ) ;
274
+ }
268
275
269
276
let content_length = response. content_length ( ) ;
270
277
debug ! (
Original file line number Diff line number Diff line change 283
283
let authors-with-avatars = data . authors . map (author => {
284
284
let avatar = none
285
285
if author . avatar != none {
286
- avatar = " assets/" + avatar_map . at (author . avatar )
286
+ let avatar_path = avatar_map . at (author . avatar , default : none )
287
+ if avatar_path != none {
288
+ avatar = " assets/" + avatar_path
289
+ }
287
290
}
288
291
(name : author . name , avatar : avatar )
289
292
})
You can’t perform that action at this time.
0 commit comments