From dd2eab08ed65fa14c5da153295d1b2e066df525b Mon Sep 17 00:00:00 2001 From: Samuel Huang Date: Sun, 8 Dec 2024 09:46:44 -0800 Subject: [PATCH] Handle content type errors explicitly --- .../huangsam/photohaul/migration/GoogleDriveMigrator.java | 7 ++++++- .../java/io/huangsam/photohaul/traversal/PathRule.java | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/huangsam/photohaul/migration/GoogleDriveMigrator.java b/src/main/java/io/huangsam/photohaul/migration/GoogleDriveMigrator.java index a8767a8..9c564cc 100644 --- a/src/main/java/io/huangsam/photohaul/migration/GoogleDriveMigrator.java +++ b/src/main/java/io/huangsam/photohaul/migration/GoogleDriveMigrator.java @@ -43,7 +43,7 @@ public void migratePhotos(@NotNull Collection photos) { try { String folderId = createDriveFolder(targetRoot, targetPath); createDrivePhoto(folderId, photo); - } catch (IOException | NullPointerException e) { + } catch (IOException e) { LOG.error("Cannot move {}: {}", photo.name(), e.getMessage()); failureCount++; } @@ -105,6 +105,11 @@ private void createDrivePhoto(String folderId, @NotNull Photo photo) throws IOEx photoMetadata.setParents(List.of(folderId)); String contentType = Files.probeContentType(photo.path()); + if (contentType == null) { + failureCount++; + return; + } + java.io.File photoFile = new java.io.File(photo.path().toString()); FileContent photoContent = new FileContent(contentType, photoFile); diff --git a/src/main/java/io/huangsam/photohaul/traversal/PathRule.java b/src/main/java/io/huangsam/photohaul/traversal/PathRule.java index d78fede..e3396df 100644 --- a/src/main/java/io/huangsam/photohaul/traversal/PathRule.java +++ b/src/main/java/io/huangsam/photohaul/traversal/PathRule.java @@ -24,8 +24,9 @@ public static Predicate validExtensions() { public static Predicate isImageContent() { return path -> { try { - return Files.probeContentType(path).startsWith("image/"); - } catch (IOException | NullPointerException e) { + String contentType = Files.probeContentType(path); + return contentType != null && contentType.startsWith("image/"); + } catch (IOException e) { return false; } };