From aa348c48045c2370a2d5d0280f75a674b5445102 Mon Sep 17 00:00:00 2001 From: Dr Scofield Date: Wed, 21 May 2008 16:20:21 +0000 Subject: renaming GETRestRegionPlugin to GETHandler as that's what it really is. --- .../ApplicationPlugins/Rest/Regions/GETHandler.cs | 190 +++++++++++++++++++++ .../Rest/Regions/GETRestRegionPlugin.cs | 190 --------------------- 2 files changed, 190 insertions(+), 190 deletions(-) create mode 100644 OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs delete mode 100644 OpenSim/ApplicationPlugins/Rest/Regions/GETRestRegionPlugin.cs (limited to 'OpenSim/ApplicationPlugins/Rest/Regions') diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs b/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs new file mode 100644 index 0000000..a319a8b --- /dev/null +++ b/OpenSim/ApplicationPlugins/Rest/Regions/GETHandler.cs @@ -0,0 +1,190 @@ +/* +* Copyright (c) Contributors, http://opensimulator.org/ +* See CONTRIBUTORS.TXT for a full list of copyright holders. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions are met: +* * Redistributions of source code must retain the above copyright +* notice, this list of conditions and the following disclaimer. +* * Redistributions in binary form must reproduce the above copyright +* notice, this list of conditions and the following disclaimer in the +* documentation and/or other materials provided with the distribution. +* * Neither the name of the OpenSim Project nor the +* names of its contributors may be used to endorse or promote products +* derived from this software without specific prior written permission. +* +* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY +* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY +* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +*/ + +using System; +using System.Threading; +using System.Collections; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Reflection; +using System.Text.RegularExpressions; +using System.Timers; +using System.Xml; +using System.Xml.Serialization; +using libsecondlife; +using Mono.Addins; +using Nwc.XmlRpc; +using Nini.Config; +using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Framework.Servers; +using OpenSim.Framework.Communications; +using OpenSim.Region.Environment.Scenes; +using OpenSim.ApplicationPlugins.Rest; + +namespace OpenSim.ApplicationPlugins.Rest.Regions +{ + + public partial class RestRegionPlugin : RestPlugin + { + #region GET methods + public string GetHandler(string request, string path, string param, + OSHttpRequest httpRequest, OSHttpResponse httpResponse) + { + // foreach (string h in httpRequest.Headers.AllKeys) + // foreach (string v in httpRequest.Headers.GetValues(h)) + // m_log.DebugFormat("{0} IsGod: {1} -> {2}", MsgID, h, v); + + MsgID = RequestID; + m_log.DebugFormat("{0} GET path {1} param {2}", MsgID, path, param); + + try + { + // param empty: regions list + if (String.IsNullOrEmpty(param)) return GetHandlerRegions(); + + // param not empty: specific region + return GetHandlerRegion(param); + } + catch (Exception e) + { + return Failure("GET", e); + } + } + + public string GetHandlerRegions() + { + XmlWriter.WriteStartElement(String.Empty, "regions", String.Empty); + foreach (Scene s in App.SceneManager.Scenes) + { + XmlWriter.WriteStartElement(String.Empty, "uuid", String.Empty); + XmlWriter.WriteString(s.RegionInfo.RegionID.ToString()); + XmlWriter.WriteEndElement(); + } + XmlWriter.WriteEndElement(); + + return XmlWriterResult; + } + + protected string ShortRegionInfo(string key, string value) + { + if (String.IsNullOrEmpty(value) || + String.IsNullOrEmpty(key)) return null; + + XmlWriter.WriteStartElement(String.Empty, "region", String.Empty); + XmlWriter.WriteStartElement(String.Empty, key, String.Empty); + XmlWriter.WriteString(value); + XmlWriter.WriteEndDocument(); + + return XmlWriterResult; + } + + public string GetHandlerRegion(string param) + { + // be resilient and don't get confused by a terminating '/' + param = param.TrimEnd(new char[]{'/'}); + string[] comps = param.Split('/'); + LLUUID regionID = (LLUUID)comps[0]; + + m_log.DebugFormat("{0} GET region UUID {1}", MsgID, regionID.ToString()); + + if (LLUUID.Zero == regionID) throw new Exception("missing region ID"); + + Scene scene = null; + App.SceneManager.TryGetScene(regionID, out scene); + if (null == scene) return Failure("GET", "cannot find region"); + + RegionDetails details = new RegionDetails(scene.RegionInfo); + + // m_log.DebugFormat("{0} GET comps {1}", MsgID, comps.Length); + // for (int i = 0; i < comps.Length; i++) m_log.DebugFormat("{0} GET comps[{1}] >{2}<", MsgID, i, comps[i]); + + if (1 == comps.Length) + { + // complete region details requested + XmlSerializer xs = new XmlSerializer(typeof(RegionDetails)); + xs.Serialize(XmlWriter, details); + return XmlWriterResult; + } + + if (2 == comps.Length) { + string resp = ShortRegionInfo(comps[1], details[comps[1]]); + if (null != resp) return resp; + + // m_log.DebugFormat("{0} GET comps advanced: >{1}<", MsgID, comps[1]); + + // check for {terrain,stats,prims} + switch (comps[1].ToLower()) + { + case "terrain": + return RegionTerrain(scene); + + case "stats": + return RegionStats(scene); + + case "prims": + return RegionPrims(scene); + } + } + return Failure("GET", "too many parameters"); + } + #endregion GET methods + + protected string RegionTerrain(Scene scene) + { + return Failure("GET", "terrain not implemented"); + } + + protected string RegionStats(Scene scene) + { + int users = scene.GetAvatars().Count; + int objects = scene.Entities.Count - users; + + XmlWriter.WriteStartElement(String.Empty, "region", String.Empty); + XmlWriter.WriteStartElement(String.Empty, "stats", String.Empty); + + XmlWriter.WriteStartElement(String.Empty, "users", String.Empty); + XmlWriter.WriteString(users.ToString()); + XmlWriter.WriteEndElement(); + + XmlWriter.WriteStartElement(String.Empty, "objects", String.Empty); + XmlWriter.WriteString(objects.ToString()); + XmlWriter.WriteEndElement(); + + XmlWriter.WriteEndDocument(); + + return XmlWriterResult; + } + + protected string RegionPrims(Scene scene) + { + return Failure("GET", "prims not implemented"); + } + } +} diff --git a/OpenSim/ApplicationPlugins/Rest/Regions/GETRestRegionPlugin.cs b/OpenSim/ApplicationPlugins/Rest/Regions/GETRestRegionPlugin.cs deleted file mode 100644 index a319a8b..0000000 --- a/OpenSim/ApplicationPlugins/Rest/Regions/GETRestRegionPlugin.cs +++ /dev/null @@ -1,190 +0,0 @@ -/* -* Copyright (c) Contributors, http://opensimulator.org/ -* See CONTRIBUTORS.TXT for a full list of copyright holders. -* -* Redistribution and use in source and binary forms, with or without -* modification, are permitted provided that the following conditions are met: -* * Redistributions of source code must retain the above copyright -* notice, this list of conditions and the following disclaimer. -* * Redistributions in binary form must reproduce the above copyright -* notice, this list of conditions and the following disclaimer in the -* documentation and/or other materials provided with the distribution. -* * Neither the name of the OpenSim Project nor the -* names of its contributors may be used to endorse or promote products -* derived from this software without specific prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY -* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY -* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND -* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -* -*/ - -using System; -using System.Threading; -using System.Collections; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Reflection; -using System.Text.RegularExpressions; -using System.Timers; -using System.Xml; -using System.Xml.Serialization; -using libsecondlife; -using Mono.Addins; -using Nwc.XmlRpc; -using Nini.Config; -using OpenSim.Framework; -using OpenSim.Framework.Console; -using OpenSim.Framework.Servers; -using OpenSim.Framework.Communications; -using OpenSim.Region.Environment.Scenes; -using OpenSim.ApplicationPlugins.Rest; - -namespace OpenSim.ApplicationPlugins.Rest.Regions -{ - - public partial class RestRegionPlugin : RestPlugin - { - #region GET methods - public string GetHandler(string request, string path, string param, - OSHttpRequest httpRequest, OSHttpResponse httpResponse) - { - // foreach (string h in httpRequest.Headers.AllKeys) - // foreach (string v in httpRequest.Headers.GetValues(h)) - // m_log.DebugFormat("{0} IsGod: {1} -> {2}", MsgID, h, v); - - MsgID = RequestID; - m_log.DebugFormat("{0} GET path {1} param {2}", MsgID, path, param); - - try - { - // param empty: regions list - if (String.IsNullOrEmpty(param)) return GetHandlerRegions(); - - // param not empty: specific region - return GetHandlerRegion(param); - } - catch (Exception e) - { - return Failure("GET", e); - } - } - - public string GetHandlerRegions() - { - XmlWriter.WriteStartElement(String.Empty, "regions", String.Empty); - foreach (Scene s in App.SceneManager.Scenes) - { - XmlWriter.WriteStartElement(String.Empty, "uuid", String.Empty); - XmlWriter.WriteString(s.RegionInfo.RegionID.ToString()); - XmlWriter.WriteEndElement(); - } - XmlWriter.WriteEndElement(); - - return XmlWriterResult; - } - - protected string ShortRegionInfo(string key, string value) - { - if (String.IsNullOrEmpty(value) || - String.IsNullOrEmpty(key)) return null; - - XmlWriter.WriteStartElement(String.Empty, "region", String.Empty); - XmlWriter.WriteStartElement(String.Empty, key, String.Empty); - XmlWriter.WriteString(value); - XmlWriter.WriteEndDocument(); - - return XmlWriterResult; - } - - public string GetHandlerRegion(string param) - { - // be resilient and don't get confused by a terminating '/' - param = param.TrimEnd(new char[]{'/'}); - string[] comps = param.Split('/'); - LLUUID regionID = (LLUUID)comps[0]; - - m_log.DebugFormat("{0} GET region UUID {1}", MsgID, regionID.ToString()); - - if (LLUUID.Zero == regionID) throw new Exception("missing region ID"); - - Scene scene = null; - App.SceneManager.TryGetScene(regionID, out scene); - if (null == scene) return Failure("GET", "cannot find region"); - - RegionDetails details = new RegionDetails(scene.RegionInfo); - - // m_log.DebugFormat("{0} GET comps {1}", MsgID, comps.Length); - // for (int i = 0; i < comps.Length; i++) m_log.DebugFormat("{0} GET comps[{1}] >{2}<", MsgID, i, comps[i]); - - if (1 == comps.Length) - { - // complete region details requested - XmlSerializer xs = new XmlSerializer(typeof(RegionDetails)); - xs.Serialize(XmlWriter, details); - return XmlWriterResult; - } - - if (2 == comps.Length) { - string resp = ShortRegionInfo(comps[1], details[comps[1]]); - if (null != resp) return resp; - - // m_log.DebugFormat("{0} GET comps advanced: >{1}<", MsgID, comps[1]); - - // check for {terrain,stats,prims} - switch (comps[1].ToLower()) - { - case "terrain": - return RegionTerrain(scene); - - case "stats": - return RegionStats(scene); - - case "prims": - return RegionPrims(scene); - } - } - return Failure("GET", "too many parameters"); - } - #endregion GET methods - - protected string RegionTerrain(Scene scene) - { - return Failure("GET", "terrain not implemented"); - } - - protected string RegionStats(Scene scene) - { - int users = scene.GetAvatars().Count; - int objects = scene.Entities.Count - users; - - XmlWriter.WriteStartElement(String.Empty, "region", String.Empty); - XmlWriter.WriteStartElement(String.Empty, "stats", String.Empty); - - XmlWriter.WriteStartElement(String.Empty, "users", String.Empty); - XmlWriter.WriteString(users.ToString()); - XmlWriter.WriteEndElement(); - - XmlWriter.WriteStartElement(String.Empty, "objects", String.Empty); - XmlWriter.WriteString(objects.ToString()); - XmlWriter.WriteEndElement(); - - XmlWriter.WriteEndDocument(); - - return XmlWriterResult; - } - - protected string RegionPrims(Scene scene) - { - return Failure("GET", "prims not implemented"); - } - } -} -- cgit v1.1