diff --git a/src/main/java/dev/kruhlmann/imgfloat/service/AccountService.java b/src/main/java/dev/kruhlmann/imgfloat/service/AccountService.java index b884e31..5899e4a 100644 --- a/src/main/java/dev/kruhlmann/imgfloat/service/AccountService.java +++ b/src/main/java/dev/kruhlmann/imgfloat/service/AccountService.java @@ -54,7 +54,7 @@ public class AccountService { @Transactional public void deleteAccount(String username) { - String normalized = normalize(username); + String normalized = StringNormalizer.toLowerCaseRoot(username); if (normalized == null || normalized.isBlank()) { return; } @@ -95,7 +95,4 @@ public class AccountService { jdbcTemplate.update("DELETE FROM SPRING_SESSION WHERE PRINCIPAL_NAME = ?", username); } - private String normalize(String value) { - return StringNormalizer.toLowerCaseRoot(value); - } } diff --git a/src/main/java/dev/kruhlmann/imgfloat/service/AuditLogService.java b/src/main/java/dev/kruhlmann/imgfloat/service/AuditLogService.java index e0b3f57..c8bf993 100644 --- a/src/main/java/dev/kruhlmann/imgfloat/service/AuditLogService.java +++ b/src/main/java/dev/kruhlmann/imgfloat/service/AuditLogService.java @@ -3,7 +3,7 @@ package dev.kruhlmann.imgfloat.service; import dev.kruhlmann.imgfloat.model.db.audit.AuditLogEntry; import dev.kruhlmann.imgfloat.repository.audit.AuditLogRepository; import dev.kruhlmann.imgfloat.util.LogSanitizer; -import java.util.Locale; +import dev.kruhlmann.imgfloat.util.StringNormalizer; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; @@ -25,11 +25,11 @@ public class AuditLogService { } public void recordEntry(String broadcaster, String actor, String action, String details) { - String normalizedBroadcaster = normalize(broadcaster); + String normalizedBroadcaster = StringNormalizer.toLowerCaseRoot(broadcaster); if (normalizedBroadcaster == null || normalizedBroadcaster.isBlank()) { return; } - String normalizedActor = normalize(actor); + String normalizedActor = StringNormalizer.toLowerCaseRoot(actor); if (normalizedActor == null || normalizedActor.isBlank()) { normalizedActor = DEFAULT_ACTOR; } @@ -60,7 +60,7 @@ public class AuditLogService { int page, int size ) { - String normalizedBroadcaster = normalize(broadcaster); + String normalizedBroadcaster = StringNormalizer.toLowerCaseRoot(broadcaster); if (normalizedBroadcaster == null || normalizedBroadcaster.isBlank()) { return Page.empty(); } @@ -80,19 +80,15 @@ public class AuditLogService { } public void deleteEntriesForBroadcaster(String broadcaster) { - String normalizedBroadcaster = normalize(broadcaster); + String normalizedBroadcaster = StringNormalizer.toLowerCaseRoot(broadcaster); if (normalizedBroadcaster == null || normalizedBroadcaster.isBlank()) { return; } auditLogRepository.deleteByBroadcaster(normalizedBroadcaster); } - private String normalize(String value) { - return value == null ? null : value.toLowerCase(Locale.ROOT); - } - private String normalizeFilter(String value) { - String normalized = normalize(value); + String normalized = StringNormalizer.toLowerCaseRoot(value); return normalized == null || normalized.isBlank() ? null : normalized; } } diff --git a/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java b/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java index 3e3ca8a..34dc9c6 100644 --- a/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java +++ b/src/main/java/dev/kruhlmann/imgfloat/service/ChannelDirectoryService.java @@ -122,12 +122,12 @@ public class ChannelDirectoryService { } public Channel getOrCreateChannel(String broadcaster) { - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); return channelRepository.findById(normalized).orElseGet(() -> channelRepository.save(new Channel(normalized))); } public List searchBroadcasters(String query) { - String q = normalize(query); + String q = StringNormalizer.toLowerCaseRoot(query); return channelRepository .findTop50ByBroadcasterContainingIgnoreCaseOrderByBroadcasterAsc(q == null ? "" : q) .stream() @@ -137,7 +137,7 @@ public class ChannelDirectoryService { public boolean addAdmin(String broadcaster, String username, String actor) { Channel channel = getOrCreateChannel(broadcaster); - String normalizedUsername = normalize(username); + String normalizedUsername = StringNormalizer.toLowerCaseRoot(username); boolean added = channel.addAdmin(normalizedUsername); if (added) { channelRepository.saveAndFlush(channel); @@ -154,7 +154,7 @@ public class ChannelDirectoryService { public boolean removeAdmin(String broadcaster, String username, String actor) { Channel channel = getOrCreateChannel(broadcaster); - String normalizedUsername = normalize(username); + String normalizedUsername = StringNormalizer.toLowerCaseRoot(username); boolean removed = channel.removeAdmin(normalizedUsername); if (removed) { channelRepository.saveAndFlush(channel); @@ -170,12 +170,12 @@ public class ChannelDirectoryService { } public Collection getAssetsForAdmin(String broadcaster) { - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); return sortAndMapAssets(normalized, assetRepository.findByBroadcaster(normalized)); } public Collection getVisibleAssets(String broadcaster) { - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); List assets = assetRepository.findByBroadcaster(normalized); List visualIds = assets .stream() @@ -335,7 +335,7 @@ public class ChannelDirectoryService { @Transactional public Optional updateCodeAsset(String broadcaster, String assetId, CodeAssetRequest request, String actor) { validateCodeAssetSource(request.getSource()); - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); byte[] bytes = request.getSource().getBytes(StandardCharsets.UTF_8); enforceUploadLimit(bytes.length); List allowedDomains = normalizeAllowedDomains(request.getAllowedDomains()); @@ -683,7 +683,7 @@ public class ChannelDirectoryService { @Transactional public Optional updateTransform(String broadcaster, String assetId, TransformRequest req, String actor) { - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); return assetRepository .findById(assetId) @@ -809,7 +809,7 @@ public class ChannelDirectoryService { } public Optional previewTransform(String broadcaster, String assetId, TransformRequest request) { - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); Asset asset = assetRepository .findById(assetId) @@ -876,7 +876,7 @@ public class ChannelDirectoryService { if (updates == null || updates.isEmpty()) { return; } - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); applyBulkOrderUpdates( broadcaster, normalized, @@ -1082,7 +1082,7 @@ public class ChannelDirectoryService { } public Optional triggerPlayback(String broadcaster, String assetId, PlaybackRequest req, String actor) { - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); return assetRepository .findById(assetId) .filter((a) -> normalized.equals(a.getBroadcaster())) @@ -1110,7 +1110,7 @@ public class ChannelDirectoryService { VisibilityRequest request, String actor ) { - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); return assetRepository .findById(assetId) .filter((a) -> normalized.equals(a.getBroadcaster())) @@ -1224,7 +1224,7 @@ public class ChannelDirectoryService { public List listScriptAttachments(String broadcaster, String scriptAssetId) { Asset asset = requireScriptAssetForBroadcaster(broadcaster, scriptAssetId); - return loadScriptAttachments(normalize(broadcaster), asset.getId(), null); + return loadScriptAttachments(StringNormalizer.toLowerCaseRoot(broadcaster), asset.getId(), null); } @Transactional(rollbackFor = IOException.class) @@ -1343,7 +1343,7 @@ public class ChannelDirectoryService { ) { Asset asset = assetRepository .findById(scriptAssetId) - .filter((stored) -> normalize(broadcaster).equals(stored.getBroadcaster())) + .filter((stored) -> StringNormalizer.toLowerCaseRoot(broadcaster).equals(stored.getBroadcaster())) .filter((stored) -> stored.getAssetType() == AssetType.SCRIPT) .orElse(null); if (asset == null) { @@ -1372,9 +1372,9 @@ public class ChannelDirectoryService { public boolean isAdmin(String broadcaster, String username) { return channelRepository - .findById(normalize(broadcaster)) + .findById(StringNormalizer.toLowerCaseRoot(broadcaster)) .map(Channel::getAdmins) - .map((admins) -> admins.contains(normalize(username))) + .map((admins) -> admins.contains(StringNormalizer.toLowerCaseRoot(username))) .orElse(false); } @@ -1389,10 +1389,6 @@ public class ChannelDirectoryService { .toList(); } - private String normalize(String value) { - return StringNormalizer.toLowerCaseRoot(value); - } - private boolean isCodeMediaType(String mediaType) { if (mediaType == null || mediaType.isBlank()) { return false; @@ -1466,7 +1462,7 @@ public class ChannelDirectoryService { } private String topicFor(String broadcaster) { - return "/topic/channel/" + normalize(broadcaster); + return "/topic/channel/" + StringNormalizer.toLowerCaseRoot(broadcaster); } private List sortAndMapAssets(String broadcaster, Collection assets) { @@ -1534,7 +1530,7 @@ public class ChannelDirectoryService { private int nextDisplayOrder(String broadcaster, AssetType... types) { return ( assetRepository - .findByBroadcaster(normalize(broadcaster)) + .findByBroadcaster(StringNormalizer.toLowerCaseRoot(broadcaster)) .stream() .filter((asset) -> Arrays.asList(types).contains(asset.getAssetType())) .map(Asset::getDisplayOrder) @@ -1577,7 +1573,7 @@ public class ChannelDirectoryService { return List.of(); } List ordered = assetRepository - .findByBroadcaster(normalize(broadcaster)) + .findByBroadcaster(StringNormalizer.toLowerCaseRoot(broadcaster)) .stream() .filter((asset) -> types.contains(asset.getAssetType())) .sorted( @@ -1744,7 +1740,7 @@ public class ChannelDirectoryService { } private Asset requireScriptAssetForBroadcaster(String broadcaster, String scriptAssetId) { - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); return assetRepository .findById(scriptAssetId) .filter((asset) -> normalized.equals(asset.getBroadcaster())) diff --git a/src/main/java/dev/kruhlmann/imgfloat/service/ChannelSettingsService.java b/src/main/java/dev/kruhlmann/imgfloat/service/ChannelSettingsService.java index cf08c3a..d2004af 100644 --- a/src/main/java/dev/kruhlmann/imgfloat/service/ChannelSettingsService.java +++ b/src/main/java/dev/kruhlmann/imgfloat/service/ChannelSettingsService.java @@ -190,16 +190,13 @@ public class ChannelSettingsService { } private Channel getOrCreateChannel(String broadcaster) { - String normalized = normalize(broadcaster); + String normalized = StringNormalizer.toLowerCaseRoot(broadcaster); return channelRepository.findById(normalized) .orElseGet(() -> channelRepository.save(new Channel(normalized))); } private String topicFor(String broadcaster) { - return "/topic/channel/" + normalize(broadcaster); + return "/topic/channel/" + StringNormalizer.toLowerCaseRoot(broadcaster); } - private String normalize(String value) { - return StringNormalizer.toLowerCaseRoot(value); - } }