15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file. 45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)package org.chromium.chromoting; 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 76d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)import org.json.JSONArray; 86d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)import org.json.JSONException; 96d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)import org.json.JSONObject; 106d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 116d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)import java.util.ArrayList; 126d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)/** Class to represent a Host returned by {@link HostListLoader}. */ 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)public class HostInfo { 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public final String name; 165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public final String id; 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public final String jabberId; 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public final String publicKey; 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public final boolean isOnline; 206d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) private final ArrayList<String> mTokenUrlPatterns; 215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 226d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) public HostInfo(String name, 236d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) String id, 246d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) String jabberId, 256d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) String publicKey, 266d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ArrayList<String> tokenUrlPatterns, 276d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) boolean isOnline) { 285d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.name = name; 295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.id = id; 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.jabberId = jabberId; 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.publicKey = publicKey; 326d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) this.mTokenUrlPatterns = tokenUrlPatterns; 335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) this.isOnline = isOnline; 345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 356d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 366d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) public ArrayList<String> getTokenUrlPatterns() { 376d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) return new ArrayList<String>(mTokenUrlPatterns); 386d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) } 396d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 406d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) public static HostInfo create(JSONObject json) throws JSONException { 416d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) assert json != null; 426d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 436d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) ArrayList<String> tokenUrlPatterns = new ArrayList<String>(); 446d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) JSONArray jsonPatterns = json.optJSONArray("tokenUrlPatterns"); 456d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) 466d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) if (jsonPatterns != null) { 476d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) for (int i = 0; i < jsonPatterns.length(); i++) { 486d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) String pattern = jsonPatterns.getString(i); 496d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) if (pattern != null && !pattern.isEmpty()) { 506d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) tokenUrlPatterns.add(pattern); 516d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) } 526d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) } 536d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) } 546d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) return new HostInfo( 556d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) json.getString("hostName"), 566d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) json.getString("hostId"), 576d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) json.optString("jabberId"), 586d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) json.optString("publicKey"), 596d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) tokenUrlPatterns, 606d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) json.optString("status").equals("ONLINE")); 616d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) } 625d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 63