OpenSim
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Events Macros
JsonRpcResponse.cs
Go to the documentation of this file.
1 /*
2  * Copyright (c) Contributors, http://opensimulator.org/
3  * See CONTRIBUTORS.TXT for a full list of copyright holders.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of the OpenSimulator Project nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27 using System;
28 using System.Net;
29 using OpenMetaverse.StructuredData;
30 
31 namespace OpenSim.Framework.Servers.HttpServer
32 {
33  public sealed class ErrorCode
34  {
35  private ErrorCode() {}
36 
37  public const int ParseError = -32700;
38  public const int InvalidRequest = -32600;
39  public const int MethodNotFound = -32601;
40  public const int InvalidParams = -32602;
41  public const int InternalError = -32604;
42 
43  }
44 
45  public class JsonRpcError
46  {
47  internal OSDMap Error = new OSDMap();
48 
49  public int Code
50  {
51  get
52  {
53  if (Error.ContainsKey("code"))
54  return Error["code"].AsInteger();
55  else
56  return 0;
57  }
58  set
59  {
60  Error["code"] = OSD.FromInteger(value);
61  }
62  }
63 
64  public string Message
65  {
66  get
67  {
68  if (Error.ContainsKey("message"))
69  return Error["message"].AsString();
70  else
71  return null;
72  }
73  set
74  {
75  Error["message"] = OSD.FromString(value);
76  }
77  }
78 
79  public OSD Data
80  {
81  get; set;
82  }
83  }
84 
85  public class JsonRpcResponse
86  {
87  public string JsonRpc
88  {
89  get
90  {
91  return Reply["jsonrpc"].AsString();
92  }
93  set
94  {
95  Reply["jsonrpc"] = OSD.FromString(value);
96  }
97  }
98 
99  public string Id
100  {
101  get
102  {
103  return Reply["id"].AsString();
104  }
105  set
106  {
107  Reply["id"] = OSD.FromString(value);
108  }
109  }
110 
111  public OSD Result
112  {
113  get; set;
114  }
115 
116  public JsonRpcError Error
117  {
118  get; set;
119  }
120 
121  public OSDMap Reply = new OSDMap();
122 
124  {
125  Error = new JsonRpcError();
126  }
127 
128  public string Serialize()
129  {
130  if (Result != null)
131  Reply["result"] = Result;
132 
133  if (Error.Code != 0)
134  {
135  Reply["error"] = (OSD)Error.Error;
136  }
137 
138  string result = string.Empty;
139  try
140  {
141  result = OSDParser.SerializeJsonString(Reply);
142  }
143  catch
144  {
145 
146  }
147  return result;
148  }
149  }
150 }
OpenMetaverse.StructuredData.OSDMap OSDMap
OpenMetaverse.StructuredData.OSD OSD