]> nmode's Git Repositories - signal-cli/blob - lib/src/main/java/org/asamk/signal/manager/util/AttachmentUtils.java
4da78f68696ed8840ab40ef35412e7827777b8e4
[signal-cli] / lib / src / main / java / org / asamk / signal / manager / util / AttachmentUtils.java
1 package org.asamk.signal.manager.util;
2
3 import org.asamk.signal.manager.api.AttachmentInvalidException;
4 import org.whispersystems.signalservice.api.messages.SignalServiceAttachmentStream;
5 import org.whispersystems.signalservice.api.util.StreamDetails;
6 import org.whispersystems.signalservice.internal.push.http.ResumableUploadSpec;
7
8 import java.io.File;
9 import java.io.FileInputStream;
10 import java.io.IOException;
11 import java.util.ArrayList;
12 import java.util.List;
13 import java.util.Optional;
14
15 public class AttachmentUtils {
16
17 public static List<SignalServiceAttachmentStream> createAttachmentStreams(List<String> attachments) throws AttachmentInvalidException {
18 if (attachments == null) {
19 return null;
20 }
21 final var signalServiceAttachments = new ArrayList<SignalServiceAttachmentStream>(attachments.size());
22 for (var attachment : attachments) {
23 signalServiceAttachments.add(createAttachmentStream(attachment));
24 }
25 return signalServiceAttachments;
26 }
27
28 public static SignalServiceAttachmentStream createAttachmentStream(String attachment) throws AttachmentInvalidException {
29 try {
30 final var streamDetails = Utils.createStreamDetails(attachment);
31
32 return createAttachmentStream(streamDetails.first(), streamDetails.second());
33 } catch (IOException e) {
34 throw new AttachmentInvalidException(attachment, e);
35 }
36 }
37
38 public static SignalServiceAttachmentStream createAttachmentStream(
39 StreamDetails streamDetails, Optional<String> name
40 ) {
41 // TODO maybe add a parameter to set the voiceNote, borderless, preview, width, height and caption option
42 final var uploadTimestamp = System.currentTimeMillis();
43 Optional<byte[]> preview = Optional.empty();
44 Optional<String> caption = Optional.empty();
45 Optional<String> blurHash = Optional.empty();
46 final Optional<ResumableUploadSpec> resumableUploadSpec = Optional.empty();
47 return new SignalServiceAttachmentStream(streamDetails.getStream(),
48 streamDetails.getContentType(),
49 streamDetails.getLength(),
50 name,
51 false,
52 false,
53 false,
54 preview,
55 0,
56 0,
57 uploadTimestamp,
58 caption,
59 blurHash,
60 null,
61 null,
62 resumableUploadSpec);
63 }
64 }