mirror of
https://github.com/aljazceru/signal-cli.git
synced 2025-12-26 10:34:23 +01:00
Store group info in json
This commit is contained in:
50
src/main/java/cli/JsonGroupStore.java
Normal file
50
src/main/java/cli/JsonGroupStore.java
Normal file
@@ -0,0 +1,50 @@
|
||||
package cli;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.core.JsonGenerator;
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.*;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class JsonGroupStore {
|
||||
@JsonProperty("groups")
|
||||
@JsonSerialize(using = JsonGroupStore.MapToListSerializer.class)
|
||||
@JsonDeserialize(using = JsonGroupStore.GroupsDeserializer.class)
|
||||
private Map<String, GroupInfo> groups = new HashMap<>();
|
||||
|
||||
private static final ObjectMapper jsonProcessot = new ObjectMapper();
|
||||
|
||||
void updateGroup(GroupInfo group) {
|
||||
groups.put(Base64.encodeBytes(group.groupId), group);
|
||||
}
|
||||
|
||||
GroupInfo getGroup(byte[] groupId) {
|
||||
return groups.get(Base64.encodeBytes(groupId));
|
||||
}
|
||||
|
||||
public static class MapToListSerializer extends JsonSerializer<Map<?, ?>> {
|
||||
@Override
|
||||
public void serialize(final Map<?, ?> value, final JsonGenerator jgen, final SerializerProvider provider) throws IOException {
|
||||
jgen.writeObject(value.values());
|
||||
}
|
||||
}
|
||||
|
||||
public static class GroupsDeserializer extends JsonDeserializer<Map<String, GroupInfo>> {
|
||||
@Override
|
||||
public Map<String, GroupInfo> deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
|
||||
Map<String, GroupInfo> groups = new HashMap<>();
|
||||
JsonNode node = jsonParser.getCodec().readTree(jsonParser);
|
||||
for (JsonNode n : node) {
|
||||
GroupInfo g = jsonProcessot.treeToValue(n, GroupInfo.class);
|
||||
groups.put(Base64.encodeBytes(g.groupId), g);
|
||||
}
|
||||
|
||||
return groups;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user