refactor(image): extract shared SHA-256 hash utility
Move computeHash from ImageFetchService into reusable ImageHashUtil to avoid duplication when other services need image hashing.
This commit is contained in:
parent
cc4c8105ef
commit
9938d4649b
@ -4,12 +4,12 @@ import static java.util.Objects.nonNull;
|
||||
|
||||
import com.google.common.util.concurrent.RateLimiter;
|
||||
import com.magamochi.common.model.enumeration.ContentType;
|
||||
import com.magamochi.image.util.ImageHashUtil;
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.UUID;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -54,7 +54,7 @@ public class ImageFetchService {
|
||||
throws NoSuchAlgorithmException {
|
||||
var fileContentType = resolveContentType(httpResponse, imageBytes);
|
||||
|
||||
var fileHash = computeHash(imageBytes);
|
||||
var fileHash = ImageHashUtil.computeSha256(imageBytes);
|
||||
|
||||
return imageManagerService.upload(
|
||||
imageBytes, fileContentType, contentType.name().toLowerCase(), fileHash);
|
||||
@ -76,22 +76,4 @@ public class ImageFetchService {
|
||||
|
||||
return tika.detect(fileBytes);
|
||||
}
|
||||
|
||||
private String computeHash(byte[] content) throws NoSuchAlgorithmException {
|
||||
var digest = MessageDigest.getInstance("SHA-256");
|
||||
var hashBytes = digest.digest(content);
|
||||
var hexString = new StringBuilder(2 * hashBytes.length);
|
||||
|
||||
for (byte b : hashBytes) {
|
||||
var hex = Integer.toHexString(0xff & b);
|
||||
|
||||
if (hex.length() == 1) {
|
||||
hexString.append('0');
|
||||
}
|
||||
|
||||
hexString.append(hex);
|
||||
}
|
||||
|
||||
return hexString.toString();
|
||||
}
|
||||
}
|
||||
|
||||
26
src/main/java/com/magamochi/image/util/ImageHashUtil.java
Normal file
26
src/main/java/com/magamochi/image/util/ImageHashUtil.java
Normal file
@ -0,0 +1,26 @@
|
||||
package com.magamochi.image.util;
|
||||
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@NoArgsConstructor(access = lombok.AccessLevel.PRIVATE)
|
||||
public class ImageHashUtil {
|
||||
public static String computeSha256(byte[] content) throws NoSuchAlgorithmException {
|
||||
var digest = MessageDigest.getInstance("SHA-256");
|
||||
var hashBytes = digest.digest(content);
|
||||
var hexString = new StringBuilder(2 * hashBytes.length);
|
||||
|
||||
for (byte b : hashBytes) {
|
||||
var hex = Integer.toHexString(0xff & b);
|
||||
|
||||
if (hex.length() == 1) {
|
||||
hexString.append('0');
|
||||
}
|
||||
|
||||
hexString.append(hex);
|
||||
}
|
||||
|
||||
return hexString.toString();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user