2 // Radegast Metaverse Client
3 // Copyright (c) 2009-2014, Radegast Development Team
4 // All rights reserved.
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are met:
9 // * Redistributions of source code must retain the above copyright notice,
10 // this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above copyright
12 // notice, this list of conditions and the following disclaimer in the
13 // documentation and/or other materials provided with the distribution.
14 // * Neither the name of the application "Radegast", nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 using System.Collections.Generic;
35 using System.Reflection;
37 using OpenMetaverse.StructuredData;
43 public string ID = string.Empty;
44 public string Name = string.Empty;
45 public string Platform = string.Empty;
46 public string LoginURI = string.Empty;
47 public string LoginPage = string.Empty;
48 public string HelperURI = string.Empty;
49 public string Website = string.Empty;
50 public string Support = string.Empty;
51 public string Register = string.Empty;
52 public string PasswordURL = string.Empty;
53 public string Version = "1";
57 public Grid(string ID, string name, string loginURI)
61 this.LoginURI = loginURI;
64 public override string ToString()
69 public static Grid FromOSD(OSD data)
71 if (data == null || data.Type != OSDType.Map) return null;
72 Grid grid = new Grid();
73 OSDMap map = (OSDMap)data;
75 grid.ID = map["gridnick"].AsString();
76 grid.Name = map["gridname"].AsString();
77 grid.Platform = map["platform"].AsString();
78 grid.LoginURI = map["loginuri"].AsString();
79 grid.LoginPage = map["loginpage"].AsString();
80 grid.HelperURI = map["helperuri"].AsString();
81 grid.Website = map["website"].AsString();
82 grid.Support = map["support"].AsString();
83 grid.Register = map["register"].AsString();
84 grid.PasswordURL = map["password"].AsString();
85 grid.Version = map["version"].AsString();
91 public class GridManager : IDisposable
93 public List<Grid> Grids;
97 Grids = new List<Grid>();
100 public void Dispose()
104 public void LoadGrids()
107 Grids.Add(new Grid("agni", "Second Life (agni)", "https://login.agni.lindenlab.com/cgi-bin/login.cgi"));
108 Grids.Add(new Grid("aditi", "Second Life Beta (aditi)", "https://login.aditi.lindenlab.com/cgi-bin/login.cgi"));
112 string sysGridsFile = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "grids.xml");
113 OSDArray sysGrids = (OSDArray)OSDParser.DeserializeLLSDXml(File.ReadAllText(sysGridsFile));
114 for (int i = 0; i < sysGrids.Count; i++)
116 RegisterGrid(Grid.FromOSD(sysGrids[i]));
121 Logger.Log(string.Format("Error loading grid information: {0}", ex.Message), Helpers.LogLevel.Warning);
125 public void RegisterGrid(Grid grid)
127 int ix = Grids.FindIndex((Grid g) => { return g.ID == grid.ID; });
138 public Grid this[int ix]
140 get { return Grids[ix]; }
143 public Grid this[string gridID]
147 foreach (Grid grid in Grids)
149 if (grid.ID == gridID) return grid;
151 throw new KeyNotFoundException();
155 public bool KeyExists(string gridID)
157 foreach (Grid grid in Grids)
159 if (grid.ID == gridID) return true;
166 get { return Grids.Count; }