Blacklist regex
This commit is contained in:
parent
fed7cd420a
commit
13fa1939ad
@ -6,8 +6,7 @@ import jakarta.persistence.GeneratedValue;
|
||||
import jakarta.persistence.Id;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Locale;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@Entity
|
||||
@Getter
|
||||
@ -26,21 +25,15 @@ public class Blacklist {
|
||||
|
||||
@NonNull
|
||||
@Column(nullable = false)
|
||||
private String query;
|
||||
private String regex;
|
||||
|
||||
public Blacklist(final BlacklistCreate create) {
|
||||
enabled = create.isEnabled();
|
||||
query = create.getQuery();
|
||||
regex = create.getQuery();
|
||||
}
|
||||
|
||||
public boolean matches(@NonNull final String title) {
|
||||
final String[] words = query.replaceAll("([0-9])([a-zA-Z])", "$1 $2")
|
||||
.replaceAll("([a-zA-Z])([0-9])", "$1 $2")
|
||||
.replaceAll("([a-z])([A-Z])", "$1 $2")
|
||||
.replaceAll("^\\W+|\\W+$", "")
|
||||
.toLowerCase(Locale.ROOT)
|
||||
.split("\\W+");
|
||||
return Arrays.stream(words).map(".*%s.*"::formatted).allMatch(title::matches);
|
||||
return Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(title).find();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ public class BlacklistDto {
|
||||
public BlacklistDto(final Blacklist blacklist) {
|
||||
this.id = blacklist.getId();
|
||||
this.enabled = blacklist.isEnabled();
|
||||
this.query = blacklist.getQuery();
|
||||
this.query = blacklist.getRegex();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -47,7 +47,7 @@ public class BlacklistService {
|
||||
|
||||
@PostMapping("{id}/query")
|
||||
public BlacklistDto query(@PathVariable final long id, @NonNull @RequestBody final String query) {
|
||||
return set(id, blacklist -> blacklist.setQuery(query));
|
||||
return set(id, blacklist -> blacklist.setRegex(query));
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
||||
Loading…
Reference in New Issue
Block a user