Prevent non-ascii characters in attachment filenames (#10)
This commit is contained in:
parent
4785915537
commit
c9f904f83f
3 changed files with 29 additions and 2 deletions
2
pom.xml
2
pom.xml
|
@ -12,7 +12,7 @@
|
|||
</parent>
|
||||
|
||||
<artifactId>kemitix-trello</artifactId>
|
||||
<version>1.0.2</version>
|
||||
<version>1.0.3</version>
|
||||
|
||||
<properties>
|
||||
<tiles-maven-plugin.version>2.18</tiles-maven-plugin.version>
|
||||
|
|
|
@ -8,7 +8,10 @@ import java.io.IOException;
|
|||
import java.net.MalformedURLException;
|
||||
import java.net.URI;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.channels.Channels;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.Normalizer;
|
||||
import java.util.Optional;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
|
@ -45,7 +48,12 @@ public class TrelloAttachment implements Attachment {
|
|||
@Override
|
||||
public File getFilename() {
|
||||
return new File(String.format("%4s - %s.%s",
|
||||
id, card.getName(), extension()));
|
||||
id, safeCardName(), extension()));
|
||||
}
|
||||
|
||||
private String safeCardName() {
|
||||
String normalize = Normalizer.normalize(card.getName(), Normalizer.Form.NFD);
|
||||
return normalize.replaceAll("[^\\p{ASCII}]", "");
|
||||
}
|
||||
|
||||
private String extension() {
|
||||
|
|
|
@ -27,4 +27,23 @@ public class TrelloAttachmentTest
|
|||
//then
|
||||
assertThat(filename.getName()).endsWith(".extension");
|
||||
}
|
||||
|
||||
@Test
|
||||
void convertsUnsafeFilename() {
|
||||
//given
|
||||
Attachment attachment = new Attachment();
|
||||
attachment.setUrl("file.txt");
|
||||
Card card = new Card();
|
||||
card.setIdShort("123");
|
||||
card.setName("Card name Á");
|
||||
AttachmentDirectory dir = new AttachmentDirectoryImpl();
|
||||
var trelloAttachment = TrelloAttachment.create(
|
||||
attachment, card, dir
|
||||
);
|
||||
//when
|
||||
File filename = trelloAttachment.getFilename();
|
||||
//then
|
||||
assertThat(filename.getName()).doesNotContain("Á");
|
||||
assertThat(filename.getName()).isEqualTo(" 123 - Card name A.txt");
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue