/** * Copyright (c) 2013, Redsolution LTD. All rights reserved. * * This file is part of Xabber project; you can redistribute it and/or * modify it under the terms of the GNU General Public License, Version 3. * * Xabber is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License, * along with this program. If not, see http://www.gnu.org/licenses/. */ package com.xabber.android.data.extension.capability; import android.support.annotation.Nullable; import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smackx.disco.packet.DiscoverInfo; /** * Represent information about client. * * @author alexander.ivanov */ public class ClientInfo { public static final ClientInfo INVALID_CLIENT_INFO = new ClientInfo(null, null, null); private final String type; private final String name; private final ClientSoftware clientSoftware; static ClientInfo fromDiscoveryInfo(@Nullable DiscoverInfo discoverInfo) { if (discoverInfo == null) { return null; } for (int useClient = 1; useClient >= 0; useClient--) { for (int useLanguage = 2; useLanguage >= 0; useLanguage--) { for (DiscoverInfo.Identity identity : discoverInfo.getIdentities()) { if (useClient == 1 && !"client".equals(identity.getCategory())) { continue; } if (useLanguage == 2 && !Stanza.getDefaultLanguage().equals(identity.getLanguage())) { continue; } if (useLanguage == 1 && identity.getLanguage() != null) { continue; } return new ClientInfo(identity.getType(), identity.getName(), discoverInfo.getNode()); } } } return new ClientInfo(null, null, null); } private ClientInfo(String type, String name, String node) { this.type = type; this.name = name; this.clientSoftware = ClientSoftware.getByName(name, node); } public String getType() { return type; } public String getName() { return name; } public ClientSoftware getClientSoftware() { return clientSoftware; } }