/// <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; }
// 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; }
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; }
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; }