1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.chromoting; 6 7 import org.json.JSONArray; 8 import org.json.JSONException; 9 import org.json.JSONObject; 10 11 import java.util.ArrayList; 12 13 /** Class to represent a Host returned by {@link HostListLoader}. */ 14 public class HostInfo { 15 public final String name; 16 public final String id; 17 public final String jabberId; 18 public final String publicKey; 19 public final boolean isOnline; 20 private final ArrayList<String> mTokenUrlPatterns; 21 22 public HostInfo(String name, 23 String id, 24 String jabberId, 25 String publicKey, 26 ArrayList<String> tokenUrlPatterns, 27 boolean isOnline) { 28 this.name = name; 29 this.id = id; 30 this.jabberId = jabberId; 31 this.publicKey = publicKey; 32 this.mTokenUrlPatterns = tokenUrlPatterns; 33 this.isOnline = isOnline; 34 } 35 36 public ArrayList<String> getTokenUrlPatterns() { 37 return new ArrayList<String>(mTokenUrlPatterns); 38 } 39 40 public static HostInfo create(JSONObject json) throws JSONException { 41 assert json != null; 42 43 ArrayList<String> tokenUrlPatterns = new ArrayList<String>(); 44 JSONArray jsonPatterns = json.optJSONArray("tokenUrlPatterns"); 45 46 if (jsonPatterns != null) { 47 for (int i = 0; i < jsonPatterns.length(); i++) { 48 String pattern = jsonPatterns.getString(i); 49 if (pattern != null && !pattern.isEmpty()) { 50 tokenUrlPatterns.add(pattern); 51 } 52 } 53 } 54 return new HostInfo( 55 json.getString("hostName"), 56 json.getString("hostId"), 57 json.optString("jabberId"), 58 json.optString("publicKey"), 59 tokenUrlPatterns, 60 json.optString("status").equals("ONLINE")); 61 } 62 } 63