X-Git-Url: https://git.nmode.ca/signal-cli/blobdiff_plain/7443225d96fd830c8abb2afd49381f6b38ce5aec..4177deccf1e91483f54c5fcfacffce0ce525ad39:/src/main/java/org/asamk/signal/util/IOUtils.java diff --git a/src/main/java/org/asamk/signal/util/IOUtils.java b/src/main/java/org/asamk/signal/util/IOUtils.java index 69128d01..f21c1572 100644 --- a/src/main/java/org/asamk/signal/util/IOUtils.java +++ b/src/main/java/org/asamk/signal/util/IOUtils.java @@ -1,5 +1,8 @@ package org.asamk.signal.util; +import org.whispersystems.signalservice.internal.util.Util; + +import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -12,7 +15,9 @@ import java.nio.file.attribute.PosixFilePermissions; import java.util.EnumSet; import java.util.Set; -import static java.nio.file.attribute.PosixFilePermission.*; +import static java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE; +import static java.nio.file.attribute.PosixFilePermission.OWNER_READ; +import static java.nio.file.attribute.PosixFilePermission.OWNER_WRITE; public class IOUtils { @@ -33,13 +38,24 @@ public class IOUtils { return output.toString(); } - public static void createPrivateDirectories(String path) throws IOException { - final Path file = new File(path).toPath(); + public static byte[] readFully(InputStream in) throws IOException { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + Util.copy(in, baos); + return baos.toByteArray(); + } + + public static void createPrivateDirectories(String directoryPath) throws IOException { + final File file = new File(directoryPath); + if (file.exists()) { + return; + } + + final Path path = file.toPath(); try { Set perms = EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE); - Files.createDirectories(file, PosixFilePermissions.asFileAttribute(perms)); + Files.createDirectories(path, PosixFilePermissions.asFileAttribute(perms)); } catch (UnsupportedOperationException e) { - Files.createDirectories(file); + Files.createDirectories(path); } } @@ -52,4 +68,13 @@ public class IOUtils { Files.createFile(file); } } + + public static String getDataHomeDir() { + String dataHome = System.getenv("XDG_DATA_HOME"); + if (dataHome != null) { + return dataHome; + } + + return System.getProperty("user.home") + "/.local/share"; + } }