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