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
5package org.chromium.chromoting;
6
7import org.json.JSONArray;
8import org.json.JSONException;
9import org.json.JSONObject;
10
11import java.util.ArrayList;
12
13/** Class to represent a Host returned by {@link HostListLoader}. */
14public 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