]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/util/IOUtils.java
Add support for uploading stickers.
[signal-cli] / src / main / java / org / asamk / signal / util / IOUtils.java
1 package org.asamk.signal.util;
2
3 import org.whispersystems.signalservice.internal.util.Util;
4
5 import java.io.ByteArrayOutputStream;
6 import java.io.File;
7 import java.io.IOException;
8 import java.io.InputStream;
9 import java.io.StringWriter;
10 import java.nio.charset.Charset;
11 import java.nio.file.Files;
12 import java.nio.file.Path;
13 import java.nio.file.attribute.PosixFilePermission;
14 import java.nio.file.attribute.PosixFilePermissions;
15 import java.util.EnumSet;
16 import java.util.Set;
17
18 import static java.nio.file.attribute.PosixFilePermission.OWNER_EXECUTE;
19 import static java.nio.file.attribute.PosixFilePermission.OWNER_READ;
20 import static java.nio.file.attribute.PosixFilePermission.OWNER_WRITE;
21
22 public class IOUtils {
23
24 private IOUtils() {
25 }
26
27 public static File createTempFile() throws IOException {
28 return File.createTempFile("signal_tmp_", ".tmp");
29 }
30
31 public static String readAll(InputStream in, Charset charset) throws IOException {
32 StringWriter output = new StringWriter();
33 byte[] buffer = new byte[4096];
34 int n;
35 while (-1 != (n = in.read(buffer))) {
36 output.write(new String(buffer, 0, n, charset));
37 }
38 return output.toString();
39 }
40
41 public static byte[] readFully(InputStream in) throws IOException {
42 ByteArrayOutputStream baos = new ByteArrayOutputStream();
43 Util.copy(in, baos);
44 return baos.toByteArray();
45 }
46
47 public static void createPrivateDirectories(String directoryPath) throws IOException {
48 final File file = new File(directoryPath);
49 if (file.exists()) {
50 return;
51 }
52
53 final Path path = file.toPath();
54 try {
55 Set<PosixFilePermission> perms = EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE);
56 Files.createDirectories(path, PosixFilePermissions.asFileAttribute(perms));
57 } catch (UnsupportedOperationException e) {
58 Files.createDirectories(path);
59 }
60 }
61
62 public static void createPrivateFile(String path) throws IOException {
63 final Path file = new File(path).toPath();
64 try {
65 Set<PosixFilePermission> perms = EnumSet.of(OWNER_READ, OWNER_WRITE);
66 Files.createFile(file, PosixFilePermissions.asFileAttribute(perms));
67 } catch (UnsupportedOperationException e) {
68 Files.createFile(file);
69 }
70 }
71
72 public static String getDataHomeDir() {
73 String dataHome = System.getenv("XDG_DATA_HOME");
74 if (dataHome != null) {
75 return dataHome;
76 }
77
78 return System.getProperty("user.home") + "/.local/share";
79 }
80 }