]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/util/Util.java
Extract SignalAccount from Manager
[signal-cli] / src / main / java / org / asamk / signal / util / Util.java
1 package org.asamk.signal.util;
2
3 import com.fasterxml.jackson.databind.JsonNode;
4
5 import java.io.InvalidObjectException;
6 import java.io.UnsupportedEncodingException;
7 import java.net.URLDecoder;
8 import java.util.HashMap;
9 import java.util.Map;
10
11 public class Util {
12
13 private Util() {
14 }
15
16 public static String formatSafetyNumber(String digits) {
17 final int partCount = 12;
18 int partSize = digits.length() / partCount;
19 StringBuilder f = new StringBuilder(digits.length() + partCount);
20 for (int i = 0; i < partCount; i++) {
21 f.append(digits, i * partSize, (i * partSize) + partSize).append(" ");
22 }
23 return f.toString();
24 }
25
26 public static Map<String, String> getQueryMap(String query) {
27 String[] params = query.split("&");
28 Map<String, String> map = new HashMap<>();
29 for (String param : params) {
30 String name = null;
31 final String[] paramParts = param.split("=");
32 try {
33 name = URLDecoder.decode(paramParts[0], "utf-8");
34 } catch (UnsupportedEncodingException e) {
35 // Impossible
36 }
37 String value = null;
38 try {
39 value = URLDecoder.decode(paramParts[1], "utf-8");
40 } catch (UnsupportedEncodingException e) {
41 // Impossible
42 }
43 map.put(name, value);
44 }
45 return map;
46 }
47
48 public static String join(CharSequence separator, Iterable<? extends CharSequence> list) {
49 StringBuilder buf = new StringBuilder();
50 for (CharSequence str : list) {
51 if (buf.length() > 0) {
52 buf.append(separator);
53 }
54 buf.append(str);
55 }
56
57 return buf.toString();
58 }
59
60 public static JsonNode getNotNullNode(JsonNode parent, String name) throws InvalidObjectException {
61 JsonNode node = parent.get(name);
62 if (node == null) {
63 throw new InvalidObjectException(String.format("Incorrect file format: expected parameter %s not found ", name));
64 }
65
66 return node;
67 }
68 }