diff options
author | Christian Schneppe <christian@pix-art.de> | 2016-11-19 23:07:54 +0100 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2016-11-19 23:07:54 +0100 |
commit | d783cec97084a12873ca62b5fcd64620056ec01b (patch) | |
tree | 65e63d03dd4ab7a834c343ba593c8cd8917620cb /src/main/java/de/pixart/messenger/utils/XmppUri.java | |
parent | 969ba45c56adaaa056f04464cd98aec115c9611b (diff) |
reformat code
Diffstat (limited to 'src/main/java/de/pixart/messenger/utils/XmppUri.java')
-rw-r--r-- | src/main/java/de/pixart/messenger/utils/XmppUri.java | 271 |
1 files changed, 136 insertions, 135 deletions
diff --git a/src/main/java/de/pixart/messenger/utils/XmppUri.java b/src/main/java/de/pixart/messenger/utils/XmppUri.java index dc52f6637..51f2b808a 100644 --- a/src/main/java/de/pixart/messenger/utils/XmppUri.java +++ b/src/main/java/de/pixart/messenger/utils/XmppUri.java @@ -13,139 +13,140 @@ import de.pixart.messenger.xmpp.jid.Jid; public class XmppUri { - protected String jid; - protected boolean muc; - protected String fingerprint; - protected List<Fingerprint> fingerprints = new ArrayList<>(); - public static final String OMEMO_URI_PARAM = "omemo-sid-"; - public static final String OTR_URI_PARAM = "otr-fingerprint"; - - public XmppUri(String uri) { - try { - parse(Uri.parse(uri)); - } catch (IllegalArgumentException e) { - try { - jid = Jid.fromString(uri).toBareJid().toString(); - } catch (InvalidJidException e2) { - jid = null; - } - } - } - - public XmppUri(Uri uri) { - parse(uri); - } - - public static boolean isXmppUri(String uri) { - String scheme = Uri.parse(uri).getScheme(); - return "xmpp".equalsIgnoreCase(scheme); - } - - protected void parse(Uri uri) { - String scheme = uri.getScheme(); - String host = uri.getHost(); - List<String> segments = uri.getPathSegments(); - if ("https".equalsIgnoreCase(scheme) && "jabber.pix-art.de".equalsIgnoreCase(host)) { - if (segments.size() >= 2 && segments.get(1).contains("@")) { - // sample : https://conversations.im/i/foo@bar.com - try { - jid = Jid.fromString(segments.get(1)).toString(); - } catch (Exception e) { - jid = null; - } - } else if (segments.size() >= 3) { - // sample : https://conversations.im/i/foo/bar.com - jid = segments.get(1) + "@" + segments.get(2); - } - muc = segments.size() > 1 && "j".equalsIgnoreCase(segments.get(0)); - } else if ("xmpp".equalsIgnoreCase(scheme)) { - // sample: xmpp:foo@bar.com - muc = "join".equalsIgnoreCase(uri.getQuery()); - if (uri.getAuthority() != null) { - jid = uri.getAuthority(); - } else { - jid = uri.getSchemeSpecificPart().split("\\?")[0]; - } - this.fingerprints = parseFingerprints(uri.getQuery()); - } else if ("imto".equalsIgnoreCase(scheme)) { - // sample: imto://xmpp/foo@bar.com - try { - jid = URLDecoder.decode(uri.getEncodedPath(), "UTF-8").split("/")[1]; - } catch (final UnsupportedEncodingException ignored) { - jid = null; - } - } else { - try { - jid = Jid.fromString(uri.toString()).toBareJid().toString(); - } catch (final InvalidJidException ignored) { - jid = null; - } - } - } - - protected List<Fingerprint> parseFingerprints(String query) { - List<Fingerprint> fingerprints = new ArrayList<>(); - String[] pairs = query == null ? new String[0] : query.split(";"); - for(String pair : pairs) { - String[] parts = pair.split("=",2); - if (parts.length == 2) { - String key = parts[0].toLowerCase(Locale.US); - String value = parts[1]; - if (OTR_URI_PARAM.equals(key)) { - fingerprints.add(new Fingerprint(FingerprintType.OTR,value)); - } - if (key.startsWith(OMEMO_URI_PARAM)) { - try { - int id = Integer.parseInt(key.substring(OMEMO_URI_PARAM.length())); - fingerprints.add(new Fingerprint(FingerprintType.OMEMO,value,id)); - } catch (Exception e) { - //ignoring invalid device id - } - } - return null; - } - } - return fingerprints; - } - - public Jid getJid() { - try { - return this.jid == null ? null :Jid.fromString(this.jid.toLowerCase()); - } catch (InvalidJidException e) { - return null; - } - } - - public List<Fingerprint> getFingerprints() { - return this.fingerprints; - } - - public boolean hasFingerprints() { - return fingerprints.size() > 0; - } - public enum FingerprintType { - OMEMO, - OTR - } - - public static class Fingerprint { - public final FingerprintType type; - public final String fingerprint; - public final int deviceId; - - public Fingerprint(FingerprintType type, String fingerprint) { - this(type, fingerprint, 0); - } - - public Fingerprint(FingerprintType type, String fingerprint, int deviceId) { - this.type = type; - this.fingerprint = fingerprint; - this.deviceId = deviceId; - } - - @Override - public String toString() { - return type.toString()+": "+fingerprint+(deviceId != 0 ? " "+String.valueOf(deviceId) : ""); - } - } + protected String jid; + protected boolean muc; + protected String fingerprint; + protected List<Fingerprint> fingerprints = new ArrayList<>(); + public static final String OMEMO_URI_PARAM = "omemo-sid-"; + public static final String OTR_URI_PARAM = "otr-fingerprint"; + + public XmppUri(String uri) { + try { + parse(Uri.parse(uri)); + } catch (IllegalArgumentException e) { + try { + jid = Jid.fromString(uri).toBareJid().toString(); + } catch (InvalidJidException e2) { + jid = null; + } + } + } + + public XmppUri(Uri uri) { + parse(uri); + } + + public static boolean isXmppUri(String uri) { + String scheme = Uri.parse(uri).getScheme(); + return "xmpp".equalsIgnoreCase(scheme); + } + + protected void parse(Uri uri) { + String scheme = uri.getScheme(); + String host = uri.getHost(); + List<String> segments = uri.getPathSegments(); + if ("https".equalsIgnoreCase(scheme) && "jabber.pix-art.de".equalsIgnoreCase(host)) { + if (segments.size() >= 2 && segments.get(1).contains("@")) { + // sample : https://conversations.im/i/foo@bar.com + try { + jid = Jid.fromString(segments.get(1)).toString(); + } catch (Exception e) { + jid = null; + } + } else if (segments.size() >= 3) { + // sample : https://conversations.im/i/foo/bar.com + jid = segments.get(1) + "@" + segments.get(2); + } + muc = segments.size() > 1 && "j".equalsIgnoreCase(segments.get(0)); + } else if ("xmpp".equalsIgnoreCase(scheme)) { + // sample: xmpp:foo@bar.com + muc = "join".equalsIgnoreCase(uri.getQuery()); + if (uri.getAuthority() != null) { + jid = uri.getAuthority(); + } else { + jid = uri.getSchemeSpecificPart().split("\\?")[0]; + } + this.fingerprints = parseFingerprints(uri.getQuery()); + } else if ("imto".equalsIgnoreCase(scheme)) { + // sample: imto://xmpp/foo@bar.com + try { + jid = URLDecoder.decode(uri.getEncodedPath(), "UTF-8").split("/")[1]; + } catch (final UnsupportedEncodingException ignored) { + jid = null; + } + } else { + try { + jid = Jid.fromString(uri.toString()).toBareJid().toString(); + } catch (final InvalidJidException ignored) { + jid = null; + } + } + } + + protected List<Fingerprint> parseFingerprints(String query) { + List<Fingerprint> fingerprints = new ArrayList<>(); + String[] pairs = query == null ? new String[0] : query.split(";"); + for (String pair : pairs) { + String[] parts = pair.split("=", 2); + if (parts.length == 2) { + String key = parts[0].toLowerCase(Locale.US); + String value = parts[1]; + if (OTR_URI_PARAM.equals(key)) { + fingerprints.add(new Fingerprint(FingerprintType.OTR, value)); + } + if (key.startsWith(OMEMO_URI_PARAM)) { + try { + int id = Integer.parseInt(key.substring(OMEMO_URI_PARAM.length())); + fingerprints.add(new Fingerprint(FingerprintType.OMEMO, value, id)); + } catch (Exception e) { + //ignoring invalid device id + } + } + return null; + } + } + return fingerprints; + } + + public Jid getJid() { + try { + return this.jid == null ? null : Jid.fromString(this.jid.toLowerCase()); + } catch (InvalidJidException e) { + return null; + } + } + + public List<Fingerprint> getFingerprints() { + return this.fingerprints; + } + + public boolean hasFingerprints() { + return fingerprints.size() > 0; + } + + public enum FingerprintType { + OMEMO, + OTR + } + + public static class Fingerprint { + public final FingerprintType type; + public final String fingerprint; + public final int deviceId; + + public Fingerprint(FingerprintType type, String fingerprint) { + this(type, fingerprint, 0); + } + + public Fingerprint(FingerprintType type, String fingerprint, int deviceId) { + this.type = type; + this.fingerprint = fingerprint; + this.deviceId = deviceId; + } + + @Override + public String toString() { + return type.toString() + ": " + fingerprint + (deviceId != 0 ? " " + String.valueOf(deviceId) : ""); + } + } } |