]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/json/JsonSendMessageResult.java
dd7f235f7be88d65d3f8136089e0c90e94ac8d5b
[signal-cli] / src / main / java / org / asamk / signal / json / JsonSendMessageResult.java
1 package org.asamk.signal.json;
2
3 import com.fasterxml.jackson.annotation.JsonInclude;
4
5 import org.asamk.signal.manager.api.SendMessageResult;
6 import org.asamk.signal.manager.groups.GroupId;
7
8 public record JsonSendMessageResult(
9 JsonRecipientAddress recipientAddress,
10 @JsonInclude(JsonInclude.Include.NON_NULL) String groupId,
11 Type type,
12 @JsonInclude(JsonInclude.Include.NON_NULL) String token,
13 @JsonInclude(JsonInclude.Include.NON_NULL) Long retryAfterSeconds
14 ) {
15
16 public static JsonSendMessageResult from(SendMessageResult result) {
17 return from(result, null);
18 }
19
20 public static JsonSendMessageResult from(SendMessageResult result, GroupId groupId) {
21 return new JsonSendMessageResult(JsonRecipientAddress.from(result.address()),
22 groupId != null ? groupId.toBase64() : null,
23 result.isSuccess()
24 ? Type.SUCCESS
25 : result.isRateLimitFailure()
26 ? Type.RATE_LIMIT_FAILURE
27 : result.isNetworkFailure()
28 ? Type.NETWORK_FAILURE
29 : result.isUnregisteredFailure()
30 ? Type.UNREGISTERED_FAILURE
31 : Type.IDENTITY_FAILURE,
32 result.proofRequiredFailure() != null ? result.proofRequiredFailure().getToken() : null,
33 result.proofRequiredFailure() != null ? result.proofRequiredFailure().getRetryAfterSeconds() : null);
34 }
35
36 public enum Type {
37 SUCCESS,
38 NETWORK_FAILURE,
39 UNREGISTERED_FAILURE,
40 IDENTITY_FAILURE,
41 RATE_LIMIT_FAILURE,
42 }
43 }