mirror of
https://github.com/AsamK/signal-cli.git
synced 2026-08-29 06:06:22 +00:00
fix(json): expose data message metadata (#2104)
This commit is contained in:
parent
0f88410465
commit
7e802166a3
@ -16,6 +16,10 @@ record JsonDataMessage(
|
||||
Integer expiresInSeconds,
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL) Boolean isExpirationUpdate,
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL) Boolean viewOnce,
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL) JsonGroupCallUpdate groupCallUpdate,
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL) Boolean isEndSession,
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL) Boolean isProfileKeyUpdate,
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL) Boolean hasProfileKey,
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL) JsonReaction reaction,
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL) JsonQuote quote,
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL) JsonPayment payment,
|
||||
@ -47,6 +51,10 @@ record JsonDataMessage(
|
||||
final var expiresInSeconds = dataMessage.expiresInSeconds();
|
||||
final var isExpirationUpdate = dataMessage.isExpirationUpdate();
|
||||
final var viewOnce = dataMessage.isViewOnce();
|
||||
final var groupCallUpdate = dataMessage.groupCallUpdate().map(JsonGroupCallUpdate::from).orElse(null);
|
||||
final var isEndSession = dataMessage.isEndSession();
|
||||
final var isProfileKeyUpdate = dataMessage.isProfileKeyUpdate();
|
||||
final var hasProfileKey = dataMessage.hasProfileKey();
|
||||
final var reaction = dataMessage.reaction().map(JsonReaction::from).orElse(null);
|
||||
final var quote = dataMessage.quote().isPresent() ? JsonQuote.from(dataMessage.quote().get()) : null;
|
||||
final var payment = dataMessage.payment().isPresent() ? JsonPayment.from(dataMessage.payment().get()) : null;
|
||||
@ -86,6 +94,10 @@ record JsonDataMessage(
|
||||
expiresInSeconds,
|
||||
isExpirationUpdate,
|
||||
viewOnce,
|
||||
groupCallUpdate,
|
||||
isEndSession,
|
||||
isProfileKeyUpdate,
|
||||
hasProfileKey,
|
||||
reaction,
|
||||
quote,
|
||||
payment,
|
||||
|
||||
13
src/main/java/org/asamk/signal/json/JsonGroupCallUpdate.java
Normal file
13
src/main/java/org/asamk/signal/json/JsonGroupCallUpdate.java
Normal file
@ -0,0 +1,13 @@
|
||||
package org.asamk.signal.json;
|
||||
|
||||
import org.asamk.signal.manager.api.MessageEnvelope;
|
||||
|
||||
import io.micronaut.jsonschema.JsonSchema;
|
||||
|
||||
@JsonSchema(title = "GroupCallUpdate")
|
||||
record JsonGroupCallUpdate(String eraId) {
|
||||
|
||||
static JsonGroupCallUpdate from(MessageEnvelope.Data.GroupCallUpdate groupCallUpdate) {
|
||||
return new JsonGroupCallUpdate(groupCallUpdate.eraId());
|
||||
}
|
||||
}
|
||||
77
src/test/java/org/asamk/signal/json/JsonDataMessageTest.java
Normal file
77
src/test/java/org/asamk/signal/json/JsonDataMessageTest.java
Normal file
@ -0,0 +1,77 @@
|
||||
package org.asamk.signal.json;
|
||||
|
||||
import org.asamk.signal.manager.api.MessageEnvelope;
|
||||
import org.asamk.signal.util.Util;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
class JsonDataMessageTest {
|
||||
|
||||
@Test
|
||||
void serializesProtocolMetadata() {
|
||||
final var dataMessage = dataMessage(Optional.of(new MessageEnvelope.Data.GroupCallUpdate("era-id")),
|
||||
true,
|
||||
true,
|
||||
true);
|
||||
|
||||
final var json = Util.createJsonObjectMapper().valueToTree(JsonDataMessage.from(dataMessage, null));
|
||||
|
||||
assertEquals("era-id", json.get("groupCallUpdate").get("eraId").textValue());
|
||||
assertTrue(json.get("isEndSession").booleanValue());
|
||||
assertTrue(json.get("isProfileKeyUpdate").booleanValue());
|
||||
assertTrue(json.get("hasProfileKey").booleanValue());
|
||||
}
|
||||
|
||||
@Test
|
||||
void omitsAbsentGroupCallUpdateAndSerializesFalseFlags() {
|
||||
final var dataMessage = dataMessage(Optional.empty(), false, false, false);
|
||||
|
||||
final var json = Util.createJsonObjectMapper().valueToTree(JsonDataMessage.from(dataMessage, null));
|
||||
|
||||
assertFalse(json.has("groupCallUpdate"));
|
||||
assertFalse(json.get("isEndSession").booleanValue());
|
||||
assertFalse(json.get("isProfileKeyUpdate").booleanValue());
|
||||
assertFalse(json.get("hasProfileKey").booleanValue());
|
||||
}
|
||||
|
||||
private static MessageEnvelope.Data dataMessage(
|
||||
final Optional<MessageEnvelope.Data.GroupCallUpdate> groupCallUpdate,
|
||||
final boolean isEndSession,
|
||||
final boolean isProfileKeyUpdate,
|
||||
final boolean hasProfileKey
|
||||
) {
|
||||
return new MessageEnvelope.Data(1L,
|
||||
Optional.empty(),
|
||||
Optional.empty(),
|
||||
groupCallUpdate,
|
||||
Optional.empty(),
|
||||
0,
|
||||
false,
|
||||
false,
|
||||
isEndSession,
|
||||
isProfileKeyUpdate,
|
||||
hasProfileKey,
|
||||
Optional.empty(),
|
||||
Optional.empty(),
|
||||
Optional.empty(),
|
||||
List.of(),
|
||||
Optional.empty(),
|
||||
Optional.empty(),
|
||||
List.of(),
|
||||
Optional.empty(),
|
||||
Optional.empty(),
|
||||
Optional.empty(),
|
||||
List.of(),
|
||||
List.of(),
|
||||
List.of(),
|
||||
Optional.empty(),
|
||||
Optional.empty(),
|
||||
Optional.empty());
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user