1 package org
.asamk
.signal
.util
;
3 import com
.fasterxml
.jackson
.annotation
.JsonAutoDetect
;
4 import com
.fasterxml
.jackson
.annotation
.PropertyAccessor
;
5 import com
.fasterxml
.jackson
.core
.JsonGenerator
;
6 import com
.fasterxml
.jackson
.databind
.ObjectMapper
;
8 import org
.whispersystems
.libsignal
.util
.guava
.Optional
;
9 import org
.whispersystems
.signalservice
.api
.push
.SignalServiceAddress
;
11 import java
.util
.Arrays
;
12 import java
.util
.List
;
13 import java
.util
.Locale
;
14 import java
.util
.stream
.Collectors
;
21 public static String
getStringIfNotBlank(Optional
<String
> value
) {
22 var string
= value
.orNull();
23 if (string
== null || string
.isBlank()) {
29 public static String
dashSeparatedToCamelCaseString(String s
) {
30 var parts
= s
.split("-");
31 return toCamelCaseString(Arrays
.asList(parts
));
34 private static String
toCamelCaseString(List
<String
> strings
) {
35 if (strings
.size() == 0) {
38 return strings
.get(0) + strings
.stream()
40 .filter(s
-> s
.length() > 0)
41 .map(s
-> Character
.toUpperCase(s
.charAt(0)) + s
.substring(1).toLowerCase(Locale
.ROOT
))
42 .collect(Collectors
.joining());
45 public static String
formatSafetyNumber(String digits
) {
50 final var partCount
= 12;
51 var partSize
= digits
.length() / partCount
;
52 var f
= new StringBuilder(digits
.length() + partCount
);
53 for (var i
= 0; i
< partCount
; i
++) {
54 f
.append(digits
, i
* partSize
, (i
* partSize
) + partSize
);
55 if (i
!= partCount
- 1) {
62 public static String
getLegacyIdentifier(final SignalServiceAddress address
) {
63 return address
.getNumber().or(() -> address
.getUuid().get().toString());
66 public static ObjectMapper
createJsonObjectMapper() {
67 var objectMapper
= new ObjectMapper();
68 objectMapper
.setVisibility(PropertyAccessor
.ALL
, JsonAutoDetect
.Visibility
.PUBLIC_ONLY
);
69 objectMapper
.disable(JsonGenerator
.Feature
.AUTO_CLOSE_TARGET
);