- List<IdentityInfo> identities;
- try {
- identities = m.getIdentities(number);
- } catch (InvalidNumberException e) {
- throw new UserErrorException("Invalid number: " + e.getMessage());
+ if (outputWriter instanceof PlainTextWriter) {
+ final var writer = (PlainTextWriter) outputWriter;
+ for (var id : identities) {
+ printIdentityFingerprint(writer, m, id);
+ }
+ } else {
+ final var writer = (JsonWriter) outputWriter;
+ final var jsonIdentities = identities.stream().map(id -> {
+ final var address = m.resolveSignalServiceAddress(id.getRecipientId());
+ var safetyNumber = Util.formatSafetyNumber(m.computeSafetyNumber(address, id.getIdentityKey()));
+ var scannableSafetyNumber = m.computeSafetyNumberForScanning(address, id.getIdentityKey());
+ return new JsonIdentity(address.getNumber().orNull(),
+ address.getUuid().transform(UUID::toString).orNull(),
+ Hex.toString(id.getFingerprint()),
+ safetyNumber,
+ scannableSafetyNumber == null
+ ? null
+ : Base64.getEncoder().encodeToString(scannableSafetyNumber),
+ id.getTrustLevel().name(),
+ id.getDateAdded().getTime());
+ }).collect(Collectors.toList());
+
+ writer.write(jsonIdentities);