/// <summary>
 /// Request avatar's classified ads.
 /// </summary>
 /// <returns>
 /// An array containing all the calassified uuid and it's name created by the creator id
 /// </returns>
 /// <param name='json'>
 /// Our parameters are in the OSDMap json["params"]
 /// </param>
 /// <param name='response'>
 /// If set to <c>true</c> response.
 /// </param>
 public bool AvatarClassifiedsRequest(OSDMap json, ref JsonRpcResponse response)
 {
     if(!json.ContainsKey("params"))
     {
         response.Error.Code = ErrorCode.ParseError;
         m_log.DebugFormat ("Classified Request");
         return false;
     }
     
     OSDMap request = (OSDMap)json["params"];
     UUID creatorId = new UUID(request["creatorId"].AsString());
     
     
     OSDArray data = (OSDArray) Service.AvatarClassifiedsRequest(creatorId);
     response.Result = data;
     
     return true;
 }
Пример #2
0
        // JsonRpc (v2.0 only) 
        // Batch requests not yet supported
        private byte[] HandleJsonRpcRequests(OSHttpRequest request, OSHttpResponse response)
        {
            Stream requestStream = request.InputStream;
            JsonRpcResponse jsonRpcResponse = new JsonRpcResponse();
            OSDMap jsonRpcRequest = null;

            try
            {
                jsonRpcRequest = (OSDMap)OSDParser.DeserializeJson(requestStream);
            }
            catch (LitJson.JsonException e)
            {
                jsonRpcResponse.Error.Code = ErrorCode.InternalError;
                jsonRpcResponse.Error.Message = e.Message;
            }
            
            requestStream.Close();

            if (jsonRpcRequest != null)
            {
                if (jsonRpcRequest.ContainsKey("jsonrpc") || jsonRpcRequest["jsonrpc"].AsString() == "2.0")
                {
                    jsonRpcResponse.JsonRpc = "2.0";

                    // If we have no id, then it's a "notification"
                    if (jsonRpcRequest.ContainsKey("id"))
                    {
                        jsonRpcResponse.Id = jsonRpcRequest["id"].AsString();
                    }

                    string methodname = jsonRpcRequest["method"];
                    JsonRPCMethod method;

                    if (jsonRpcHandlers.ContainsKey(methodname))
                    {
                        lock(jsonRpcHandlers)
                        {
                            jsonRpcHandlers.TryGetValue(methodname, out method);
                        }
                        bool res = false;
                        try
                        {
                            res = method(jsonRpcRequest, ref jsonRpcResponse);
                            if(!res)
                            {
                                // The handler sent back an unspecified error
                                if(jsonRpcResponse.Error.Code == 0)
                                {
                                    jsonRpcResponse.Error.Code = ErrorCode.InternalError;
                                }
                            }
                        }
                        catch (Exception e)
                        {
                            string ErrorMessage = string.Format("[BASE HTTP SERVER]: Json-Rpc Handler Error method {0} - {1}", methodname, e.Message);
                            m_log.Error(ErrorMessage);
                            jsonRpcResponse.Error.Code = ErrorCode.InternalError;
                            jsonRpcResponse.Error.Message = ErrorMessage;
                        }
                    }
                    else // Error no hanlder defined for requested method
                    {
                        jsonRpcResponse.Error.Code = ErrorCode.InvalidRequest;
                        jsonRpcResponse.Error.Message = string.Format ("No handler defined for {0}", methodname);
                    }
                }
                else // not json-rpc 2.0 could be v1
                {
                    jsonRpcResponse.Error.Code = ErrorCode.InvalidRequest;
                    jsonRpcResponse.Error.Message = "Must be valid json-rpc 2.0 see: http://www.jsonrpc.org/specification";

                    if (jsonRpcRequest.ContainsKey("id"))
                        jsonRpcResponse.Id = jsonRpcRequest["id"].AsString();
                }
            }

            response.KeepAlive = true;
            string responseData = string.Empty;

            responseData = jsonRpcResponse.Serialize();
       
            byte[] buffer = Encoding.UTF8.GetBytes(responseData);
            return buffer;
        }
 public bool ClassifiedUpdate(OSDMap json, ref JsonRpcResponse response)
 {
     if(!json.ContainsKey("params"))
     {
         response.Error.Code = ErrorCode.ParseError;
         response.Error.Message = "Error parsing classified update request";
         m_log.DebugFormat ("Classified Update Request");
         return false;
     }
     
     string result = string.Empty;
     UserClassifiedAdd ad = new UserClassifiedAdd();
     object Ad = (object)ad;
     OSD.DeserializeMembers(ref Ad, (OSDMap)json["params"]);
     if(Service.ClassifiedUpdate(ad, ref result))
     {
         response.Result = OSD.SerializeMembers(ad);
         return true;
     }
     
     response.Error.Code = ErrorCode.InternalError;
     response.Error.Message = string.Format("{0}", result);
     return false;
 }
 public bool UpdateUserAppData(OSDMap json, ref JsonRpcResponse response)
 {
     if(!json.ContainsKey("params"))
     {
         response.Error.Code = ErrorCode.ParseError;
         response.Error.Message = "no parameters supplied";
         m_log.DebugFormat ("User App Data Update Request");
         return false;
     }
     
     string result = string.Empty;
     UserAppData props = new UserAppData();
     object Props = (object)props;
     OSD.DeserializeMembers(ref Props, (OSDMap)json["params"]);
     if(Service.SetUserAppData(props, ref result))
     {
         response.Result = OSD.SerializeMembers(props);
         return true;
     }
     
     response.Error.Code = ErrorCode.InternalError;
     response.Error.Message = string.Format("{0}", result);
     return false;
 }
 public bool UserPreferenecesUpdate(OSDMap json, ref JsonRpcResponse response)
 {
     if(!json.ContainsKey("params"))
     {
         response.Error.Code = ErrorCode.ParseError;
         response.Error.Message = "no parameters supplied";
         m_log.DebugFormat ("User Preferences Update Request");
         return false;
     }
     
     string result = string.Empty;
     UserPreferences prefs = new UserPreferences();
     object Prefs = (object)prefs;
     OSD.DeserializeMembers(ref Prefs, (OSDMap)json["params"]);
     if(Service.UserPreferencesUpdate(ref prefs, ref result))
     {
         response.Result = OSD.SerializeMembers(prefs);
         return true;
     }
     
     response.Error.Code = ErrorCode.InternalError;
     response.Error.Message = string.Format("{0}", result);
     m_log.InfoFormat("[PROFILES]: User preferences update error - {0}", response.Error.Message);
     return false;
 }
 public bool RequestUserAppData(OSDMap json, ref JsonRpcResponse response)
 {
     if(!json.ContainsKey("params"))
     {
         response.Error.Code = ErrorCode.ParseError;
         response.Error.Message = "no parameters supplied";
         m_log.DebugFormat ("User Application Service URL Request: No Parameters!");
         return false;
     }
     
     string result = string.Empty;
     UserAppData props = new UserAppData();
     object Props = (object)props;
     OSD.DeserializeMembers(ref Props, (OSDMap)json["params"]);
     if(Service.RequestUserAppData(ref props, ref result))
     {
         OSDMap res = new OSDMap();
         res["result"] = OSD.FromString("success");
         res["token"] = OSD.FromString (result);
         response.Result = res;
         
         return true;
     }
     
     response.Error.Code = ErrorCode.InternalError;
     response.Error.Message = string.Format("{0}", result);
     return false;
 }
 public bool NotesUpdate(OSDMap json, ref JsonRpcResponse response)
 {
     if(!json.ContainsKey("params"))
     {
         response.Error.Code = ErrorCode.ParseError;
         response.Error.Message = "No parameters";
         m_log.DebugFormat ("Avatar Notes Update Request");
         return false;
     }
     
     string result = string.Empty;
     UserProfileNotes note = new UserProfileNotes();
     object Notes = (object) note;
     OSD.DeserializeMembers(ref Notes, (OSDMap)json["params"]);
     if(Service.NotesUpdate(ref note, ref result))
     {
         response.Result = OSD.SerializeMembers(note);
         return true;
     }
     return true;
 }
 public bool PicksDelete(OSDMap json, ref JsonRpcResponse response)
 {
     if(!json.ContainsKey("params"))
     {
         response.Error.Code = ErrorCode.ParseError;
         m_log.DebugFormat ("Avatar Picks Delete Request");
         return false;
     }
     
     OSDMap request = (OSDMap)json["params"];
     UUID pickId = new UUID(request["pickId"].AsString());
     if(Service.PicksDelete(pickId))
         return true;
     
     response.Error.Code = ErrorCode.InternalError;
     response.Error.Message = "data error removing record";
     return false;
 }
 public bool PicksUpdate(OSDMap json, ref JsonRpcResponse response)
 {
     if(!json.ContainsKey("params"))
     {
         response.Error.Code = ErrorCode.ParseError;
         response.Error.Message = "no parameters supplied";
         m_log.DebugFormat ("Avatar Picks Update Request");
         return false;
     }
     
     string result = string.Empty;
     UserProfilePick pick = new UserProfilePick();
     object Pick = (object)pick;
     OSD.DeserializeMembers(ref Pick, (OSDMap)json["params"]);
     if(Service.PicksUpdate(ref pick, ref result))
     {
         response.Result = OSD.SerializeMembers(pick);
         return true;
     }
     
     response.Error.Code = ErrorCode.InternalError;
     response.Error.Message = "unable to update pick";
     
     return false;
 }
Пример #10
0
 public bool ClassifiedDelete(OSDMap json, ref JsonRpcResponse response)
 {
     if(!json.ContainsKey("params"))
     {
         response.Error.Code = ErrorCode.ParseError;
         m_log.DebugFormat ("Classified Delete Request");
         return false;
     }
     
     OSDMap request = (OSDMap)json["params"];
     UUID classifiedId = new UUID(request["classifiedID"].AsString());
     
     OSDMap res = new OSDMap();
     res["result"] = OSD.FromString("success");
     response.Result = res;
     
     return true;
     
 }
Пример #11
0
        public bool AvatarNotesRequest(OSDMap json, ref JsonRpcResponse response)
        {
            if(!json.ContainsKey("params"))
            {
                response.Error.Code = ErrorCode.ParseError;
                response.Error.Message = "Params missing";
                m_log.DebugFormat ("Avatar Notes Request");
                return false;
            }

            UserProfileNotes note = new UserProfileNotes();
            object Note = (object)note;
            OSD.DeserializeMembers(ref Note, (OSDMap)json["params"]);
            if(Service.AvatarNotesRequest(ref note))
            {
                response.Result = OSD.SerializeMembers(note);
                return true;
            }

            response.Error.Code = ErrorCode.InternalError;
            response.Error.Message = "Error reading notes";
            return false;
        }