]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/manager/util/IOUtils.java
Implement registration pin lock with KBS
[signal-cli] / src / main / java / org / asamk / signal / manager / util / IOUtils.java
1 package org.asamk.signal.manager.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.FileOutputStream;
8 import java.io.IOException;
9 import java.io.InputStream;
10 import java.io.OutputStream;
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 public static File createTempFile() throws IOException {
25 return File.createTempFile("signal_tmp_", ".tmp");
26 }
27
28 public static byte[] readFully(InputStream in) throws IOException {
29 ByteArrayOutputStream baos = new ByteArrayOutputStream();
30 Util.copy(in, baos);
31 return baos.toByteArray();
32 }
33
34 public static void createPrivateDirectories(File file) throws IOException {
35 if (file.exists()) {
36 return;
37 }
38
39 final Path path = file.toPath();
40 try {
41 Set<PosixFilePermission> perms = EnumSet.of(OWNER_READ, OWNER_WRITE, OWNER_EXECUTE);
42 Files.createDirectories(path, PosixFilePermissions.asFileAttribute(perms));
43 } catch (UnsupportedOperationException e) {
44 Files.createDirectories(path);
45 }
46 }
47
48 public static void createPrivateFile(File path) throws IOException {
49 final Path file = path.toPath();
50 try {
51 Set<PosixFilePermission> perms = EnumSet.of(OWNER_READ, OWNER_WRITE);
52 Files.createFile(file, PosixFilePermissions.asFileAttribute(perms));
53 } catch (UnsupportedOperationException e) {
54 Files.createFile(file);
55 }
56 }
57
58 public static void copyStreamToFile(InputStream input, File outputFile) throws IOException {
59 copyStreamToFile(input, outputFile, 8192);
60 }
61
62 public static void copyStreamToFile(InputStream input, File outputFile, int bufferSize) throws IOException {
63 try (OutputStream output = new FileOutputStream(outputFile)) {
64 byte[] buffer = new byte[bufferSize];
65 int read;
66
67 while ((read = input.read(buffer)) != -1) {
68 output.write(buffer, 0, read);
69 }
70 }
71 }
72 }