public async Task <JsonResult> Post() { DateTime start = DateTime.Now; JsonResult res = null; JsonRPCrequest req = null; try { var ctype = HttpContext.Request.ContentType; LitServer.FormData form = null; if (ctype == "application/x-www-form-urlencoded" || (ctype.IndexOf("multipart/form-data;") == 0)) { form = await LitServer.FormData.FromRequest(HttpContext.Request); var _jsonrpc = form.mapParams["jsonrpc"]; var _id = long.Parse(form.mapParams["id"]); var _method = form.mapParams["method"]; var _strparams = form.mapParams["params"]; var _params = JArray.Parse(_strparams); req = new JsonRPCrequest { jsonrpc = _jsonrpc, method = _method, @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(_params)), id = _id }; } else// if (ctype == "application/json") 其他所有请求方式都这样取好了 { var text = await LitServer.FormData.GetStringFromRequest(HttpContext.Request); req = JsonConvert.DeserializeObject <JsonRPCrequest>(text); } string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString(); res = Json(api.getRes(req, ipAddr)); // 超时记录 if (DateTime.Now.Subtract(start).TotalSeconds > logExeTimeMax) { log.Info(LogHelper.logInfoFormat(req, res, start)); } } catch (Exception e) { Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message); res = Json(resE); // 错误记录 log.Info(LogHelper.logInfoFormat(req, res, start)); } return(res); }
public async Task <JsonResult> Post() { JsonRPCrequest req = null; DateTime start = DateTime.Now; try { var ctype = HttpContext.Request.ContentType; FormData form = null; if (ctype == "application/x-www-form-urlencoded" || (ctype.IndexOf("multipart/form-data;", StringComparison.CurrentCulture) == 0)) { form = await FormData.FromRequest(HttpContext.Request); var _jsonrpc = form.mapParams["jsonrpc"]; var _id = long.Parse(form.mapParams["id"]); var _method = form.mapParams["method"]; var _strparams = form.mapParams["params"]; var _params = JArray.Parse(_strparams); req = new JsonRPCrequest { jsonrpc = _jsonrpc, method = _method, @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(_params)), id = _id }; } else { var text = await FormData.GetStringFromRequest(HttpContext.Request); req = JsonConvert.DeserializeObject <JsonRPCrequest>(text); } string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString(); var result = Json(api.getRes(req, ipAddr)); if (DateTime.Now.Subtract(start).TotalSeconds > logExeTimeMax) { log.Info(LogHelper.logInfoFormat(req, result, start)); } return(result); } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message); var result = Json(resE); log.Error(LogHelper.logInfoFormat(req, result, start)); return(Json(result)); } }
public async Task <JsonResult> Post() { try { var ctype = HttpContext.Request.ContentType; LitServer.FormData form = null; JsonRPCrequest req = null; if (ctype == "application/x-www-form-urlencoded" || (ctype.IndexOf("multipart/form-data;") == 0)) { form = await LitServer.FormData.FromRequest(HttpContext.Request); var _jsonrpc = form.mapParams["jsonrpc"]; var _id = long.Parse(form.mapParams["id"]); var _method = form.mapParams["method"]; var _strparams = form.mapParams["params"]; var _params = JArray.Parse(_strparams); req = new JsonRPCrequest { jsonrpc = _jsonrpc, method = _method, @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(_params)), id = _id }; } else // if (ctype == "application/json") 其他所有请求方式都这样取好了 { var text = await LitServer.FormData.GetStringFromRequest(HttpContext.Request); req = JsonConvert.DeserializeObject <JsonRPCrequest>(text); } string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString(); return(Json(api.getRes(req, ipAddr))); } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message); return(Json(resE)); } }
public async Task <JsonResult> GetAsync(string @jsonrpc, string @method, string @params, long @id) { JsonRPCrequest req = null; DateTime start = DateTime.Now; try { req = new JsonRPCrequest { jsonrpc = @jsonrpc, method = @method, @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(JArray.Parse(@params))), id = @id }; string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString(); //Console.WriteLine("start...."); //foreach (var aa in Request.Headers) //{ // Console.WriteLine("test:" + aa.Key + ":" + aa.Value); //} var json = await api.getResAsync(req, ipAddr); var result = Json(json); if (DateTime.Now.Subtract(start).TotalSeconds > logExeTimeMax) { log.Info(logHelper.logInfoFormat(req, result, start)); } return(result); } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message); var result = Json(resE); log.Error(logHelper.logInfoFormat(req, result, start)); return(Json(result)); } }
public JsonResult Get(string @jsonrpc, string @method, string @params, long @id) { try { JsonRPCrequest req = new JsonRPCrequest { jsonrpc = @jsonrpc, method = @method, @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(JArray.Parse(@params))), id = @id }; string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString(); return(Json(api.getRes(req, ipAddr))); } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message); return(Json(resE)); } }
public JsonResult Get(string @jsonrpc, string @method, string @params, long @id) { DateTime start = DateTime.Now; JsonResult res = null; JsonRPCrequest req = null; try { req = new JsonRPCrequest { jsonrpc = @jsonrpc, method = @method, @params = JsonConvert.DeserializeObject <object[]>(JsonConvert.SerializeObject(JArray.Parse(@params))), id = @id }; string ipAddr = Request.HttpContext.Connection.RemoteIpAddress.ToString(); res = Json(api.getRes(req, ipAddr, this)); // 超时记录 if (DateTime.Now.Subtract(start).TotalSeconds > logExeTimeMax) { log.Info(LogHelper.logInfoFormat(req, res, start)); } } catch (Exception e) { Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(0, -100, "Parameter Error", e.Message); res = Json(resE); // 错误记录 log.Info(LogHelper.logInfoFormat(req, res, start)); } return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); try { point(req.method); result = ProcessRes(req); if (result != null && result.Count > 0 && result[0]["errorCode"] != null) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, (int)result[0]["errorCode"], (string)result[0]["errorMsg"], (string)result[0]["errorData"]); return(resE); } //if (result.Count == 0) //{ // JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); // // return resE; //} } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr, Controller controller) { JArray result = null; try { switch (req.method) { // molo_v2.0_ed case "getLastUpdatorInfo": result = ms.getLastUpdatorInfo( req.@params[0].ToString() ); break; case "modifyProjInfo": result = ms.modifyProjInfo(controller, req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString() ); break; case "getProjFundList": result = ms.getProjFundList(controller, req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "getProjBidPrice": result = ms.getProjBidPrice(); break; case "getProjFundTotal": result = ms.getProjFundTotal( req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()) ); break; // molo_v2.0_st // ******************************************* v3.st case "querySupportVersion": result = ms.querySupportVersion(controller); break; case "queryContractInfo": result = ms.queryContractInfo(controller, req.@params[0].ToString()); break; case "saveContractInfo": if ([email protected] > 21) { result = ms.saveContractInfo(controller, req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString(), long.Parse(req.@params[8].ToString()), long.Parse(req.@params[9].ToString()), long.Parse(req.@params[10].ToString()), long.Parse(req.@params[11].ToString()), long.Parse(req.@params[12].ToString()), req.@params[13].ToString(), req.@params[14].ToString(), req.@params[15].ToString(), JArray.Parse(req.@params[16].ToString()), long.Parse(req.@params[17].ToString()), long.Parse(req.@params[18].ToString()), long.Parse(req.@params[19].ToString()), JArray.Parse(req.@params[20].ToString()), req.@params[21].ToString() ); break; } result = ms.saveContractInfo(controller, req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString(), long.Parse(req.@params[8].ToString()), long.Parse(req.@params[9].ToString()), long.Parse(req.@params[10].ToString()), long.Parse(req.@params[11].ToString()), long.Parse(req.@params[12].ToString()), req.@params[13].ToString(), req.@params[14].ToString(), req.@params[15].ToString(), JArray.Parse(req.@params[16].ToString()), long.Parse(req.@params[17].ToString()), long.Parse(req.@params[18].ToString()), long.Parse(req.@params[19].ToString()), JArray.Parse(req.@params[20].ToString()) ); break; case "getVoteInfo": result = ms.getVoteInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "getProjDepositInfo": result = ms.getProjDepositInfo(controller, req.@params[0].ToString()); break; case "getTokenBalanceFromUpStream": result = ms.getTokenBalanceFromUpStream(controller, req.@params[0].ToString(), req.@params[1].ToString()); break; case "getTokenBalance": result = ms.getTokenBalance(controller, req.@params[0].ToString(), req.@params[1].ToString()); break; #region discuss // molo.prop.discuss case "getMoloPropSubDiscussList": result = ms.getMoloPropSubDiscussList(controller, req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()) ); break; case "getMoloPropDiscussList": result = ms.getMoloPropDiscussList(controller, req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()) ); break; case "getMoloPropDiscuss": result = ms.getMoloPropDiscuss(req.@params[0].ToString()); break; case "zanMoloPropDiscuss": result = ms.zanMoloPropDiscuss(controller, req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "addMoloPropDiscuss": result = ms.addMoloPropDiscuss(controller, req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString() ); break; // molo.discuss case "getMoloSubDiscussList": result = ms.getMoloSubDiscussList(controller, req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()) ); break; case "getMoloDiscussList": result = ms.getMoloDiscussList(controller, req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()) ); break; case "getMoloDiscuss": result = ms.getMoloDiscuss(req.@params[0].ToString()); break; case "zanMoloDiscuss": result = ms.zanMoloDiscuss(controller, req.@params[0].ToString(), req.@params[1].ToString() ); break; case "addMoloDiscuss": result = ms.addMoloDiscuss(controller, req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; #endregion // case "getProjMemberListV3": if ([email protected] > 3) { result = ms.getProjMemberList( req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString()); } else { result = ms.getProjMemberList( req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; case "getProjProposalDetailV3": result = ms.getProjProposalDetail(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getProjProposalListV3": if ([email protected] < 5) { result = ms.getProjProposalList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString()); } else { result = ms.getProjProposalList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString()); } break; case "getProjdetailV3": result = ms.getProjDetail(req.@params[0].ToString()); break; case "getProjListV3": result = ms.getProjList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; // case "modifyUserNameV3": result = usV3.modifyUserName(controller, req.@params[0].ToString()); break; case "modifyUserIconV3": result = usV3.modifyUserIcon(controller, req.@params[0].ToString()); break; case "logoutV3": result = usV3.logout(controller); break; case "getUserInfoV3": result = usV3.getUserInfo(controller); break; case "validateLoginV3": result = usV3.validateLoginInfo(controller, req.@params[0].ToString(), req.@params[1].ToString()); break; case "getLoginNonceV3": result = usV3.getLoginNonce(req.@params[0].ToString()); break; // ******************************************* v3.ed case "exportOrderInfo": result = rs.exportOrderInfo( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "queryProjBuyOrderList": result = rs.queryProjBuyOrderList( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString()), int.Parse(req.@params[5].ToString()), req.@params[6].ToString(), req.@params[7].ToString(), int.Parse(req.@params[8].ToString()) ); break; case "queryProjBuyOrder": result = rs.queryProjBuyOrder( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString() ); break; case "queryBuyOrderList": result = rs.queryBuyOrderList( req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()) ); break; case "queryBuyOrder": result = rs.queryBuyOrder( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString() ); break; case "confirmDeliverBuyOrder": result = rs.confirmDeliverBuyOrder( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString() ); break; case "cancelBuyOrder": result = rs.cancelBuyOrder( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "confirmBuyOrder": result = rs.confirmBuyOrder( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString() ); break; case "initBuyOrder": result = rs.initBuyOrder( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString(), req.@params[8].ToString(), req.@params[9].ToString(), req.@params[10].ToString() ); break; // case "queryTokenBalanceInfo": result = fs.queryTokenBalanceInfo( req.@params[0].ToString(), req.@params[1].ToString() ); break; case "queryTxList": result = fs.queryTxList( req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()) ); break; case "queryTokenHistPrice": result = fs.queryTokenHistPrice( req.@params[0].ToString(), req.@params[1].ToString() ); break; case "queryReserveToken": result = fs.queryReserveToken( req.@params[0].ToString() ); break; case "queryRewardDetail": result = fs.queryRewardDetail( req.@params[0].ToString() ); break; case "queryRewardList": result = fs.queryRewardList( req.@params[0].ToString() ); break; case "queryTokenPrice": result = fs.queryTokenPrice( req.@params[0].ToString() ); break; case "queryProjContract": result = fs.queryProjContract(req.@params[0].ToString()); break; case "queryContractHash": result = fs.queryContractHash( req.@params[0].ToString() ); break; case "startFinance": result = fs.startFinance( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "saveReserveFundRatio": result = fs.saveReserveFundRatio( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString() ); break; case "queryReserveFundRatio": result = fs.queryReserveFundRatio( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "queryFinanceFund": result = fs.queryFinanceFund( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "queryReward": result = fs.queryReward( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "saveReward": result = fs.saveReward( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), JObject.Parse(req.@params[5].ToString()) ); break; case "queryContract": result = fs.queryContract( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "publishContract": result = fs.publishContract( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString(), req.@params[8].ToString(), req.@params[9].ToString(), JArray.Parse(req.@params[10].ToString()) ); break; case "bindAddress": result = us.bindAddress( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString() ); break; // case "getStarMangeProjCount": result = ps.getStarMangeProjCount( req.@params[0].ToString(), req.@params[1].ToString()); break; // case "zanUpdate": result = ds.zanUpdate( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString()); break; case "zanUpdateDiscuss": result = ds.zanUpdateDiscuss( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString()); break; case "zanProjDiscuss": result = ds.zanProjDiscuss( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString()); break; // case "getUpdateSubChildDiscussList": result = ds.getUpdateSubChildDiscussList( req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "getUpdateSubDiscussList": result = ds.getUpdateSubDiscussList( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString())); break; case "getUpdateDiscuss": result = ds.getUpdateDiscuss( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString()); break; case "delUpdateDiscuss": result = ds.delUpdateDiscuss( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString()); break; case "addUpdateDiscuss": result = ds.addUpdateDiscuss( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString()); break; case "getProjSubChildDiscussList": result = ds.getProjSubChildDiscussList( req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "getProjSubDiscussList": result = ds.getProjSubDiscussList( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString())); break; case "getProjDiscuss": result = ds.getProjDiscuss(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "addProjDiscuss": result = ds.addProjDiscuss( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString()); break; // case "startSupportProj": result = ps.startSupportProj(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "cancelStarProj": result = ps.cancelStarProj(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "startStarProj": result = ps.startStarProj(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; // case "commitProjAudit": result = ps.commitProjAudit(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; // case "queryUpdateList": result = ps.queryUpdateList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "queryProjTeamBrief": result = ps.queryProjTeamBrief(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "getProjInfo": result = ps.getProjInfo(req.@params[0].ToString()); break; case "queryProjDetail": result = ps.queryProjDetail(req.@params[0].ToString(), req.@params[1].ToString()); break; case "queryProjListAtManage": result = ps.queryProjListAtManage(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "queryProjListAtStar": result = ps.queryProjListAtStar(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "queryProjList": result = ps.queryProjList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; // case "queryUpdate": result = ps.queryUpdate( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "modifyUpdate": result = ps.modifyUpdate( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString() ); break; case "deleteUpdate": result = ps.deleteUpdate( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString() ); break; case "createUpdate": result = ps.createUpdate( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString() ); break; // case "queryProjTeam": result = ps.queryProjTeam( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString()) ); break; case "modifyUserRole": result = ps.modifyUserRole( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString() ); break; case "deleteProjTeam": result = ps.deleteProjTeam( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString() ); break; case "verifyInvite": result = ps.verifyInvite( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString()); break; case "inviteMember": result = ps.inviteMember( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString()); break; case "queryMember": result = ps.queryMember( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString()) ); break; // case "queryProj": result = ps.queryProj( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "deleteProj": result = ps.deleteProj( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString() ); break; case "modifyProjName": result = ps.modifyProjName( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString()); break; case "modifyProjEmail": result = ps.modifyProjEmail( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString()); break; case "modifyProjVideo": result = ps.modifyProjVideo( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString()); break; case "createProj": result = ps.createProj( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString()); break; // case "reSendVerify": result = us.reSendVerify(req.@params[0].ToString(), req.@params[1].ToString()); break; case "verifyEmail": result = us.verifyEmail(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "modifyEmail": result = us.modifyEmail(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString()); break; case "modifyPassword": result = us.modifyPassword(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString()); break; case "modifyUserBrief": result = us.modifyUserBrief(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "modifyUserIcon": result = us.modifyUserIcon(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "getUserInfo": if ([email protected] == 3) { result = us.getUserInfo(req.@params[0].ToString(), req.@params[1].ToString(), "1"); break; } result = us.getUserInfo(req.@params[0].ToString(), req.@params[1].ToString()); break; case "verifyReset": result = us.verifyReset(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString()); break; case "resetPassword": result = us.resetPassword(req.@params[0].ToString()); break; case "login": result = us.login(req.@params[0].ToString(), req.@params[1].ToString()); break; case "verifyRegister": result = us.verifyRegister(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "register": result = us.register(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "checkEmail": result = us.checkEmail(req.@params[0].ToString()); break; case "checkUsername": result = us.checkUsername(req.@params[0].ToString()); break; // case "getnodetype": result = new JArray { new JObject { { "nodeType", netnode } } }; break; } // if (result == null || result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { Console.WriteLine(e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); string resultStr = string.Empty; string findFliter = string.Empty; string sortStr = string.Empty; try { switch (req.method) { case "signup": { string password = (string)req.@params[0]; ThinNeo.NEP6.NEP6Wallet nep6wallet = new ThinNeo.NEP6.NEP6Wallet(); nep6wallet.CreateAccount(password); result = new JArray() { JObject.Parse(nep6wallet.GetWallet().ToString()) }; } break; case "signin": { string wif = (string)req.@params[0]; string str_wallet = (string)req.@params[1]; if (!string.IsNullOrEmpty(wif)) { byte[] bytes_prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif); string prikey = ThinNeo.Helper.Bytes2HexString(bytes_prikey); byte[] bytes_pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(bytes_prikey); string pubkey = ThinNeo.Helper.Bytes2HexString(bytes_pubkey); string address = ThinNeo.Helper.GetAddressFromPublicKey(bytes_pubkey); JObject Jo = new JObject(); Jo[address] = prikey; result = new JArray() { Jo }; } else if (!string.IsNullOrEmpty(str_wallet)) { MyJson.JsonNode_Object wallet = MyJson.Parse(str_wallet.Replace("\r\n", "")).AsDict(); ThinNeo.NEP6.NEP6Wallet nep6wallet = new ThinNeo.NEP6.NEP6Wallet(wallet); JArray Ja = new JArray(); foreach (var account in nep6wallet.accounts) { JObject jObject = new JObject(); jObject[ThinNeo.Helper.GetAddressFromPublicKey(account.Value.ScriptHash)] = account.Value.nep2key; Ja.Add(jObject); } result = Ja; } } break; case "getassets": //获取资产余额 { string prikey = (string)req.@params[0]; JArray jArray = new JArray(); JObject jObject = new JObject(); jObject["id"] = "neo"; jObject["name"] = "小蚁股"; jObject["value"] = 123; jArray.Add(jObject); jObject = new JObject(); jObject["id"] = "gas"; jObject["name"] = "小蚁币"; jObject["value"] = 321; jArray.Add(jObject); result = jArray; } break; case "chargemoney": //充钱 { string prikey = (string)req.@params[0]; Int64 value = (Int64)req.@params[1]; result = getJAbyKV("result", "success"); } break; case "getbackmoney": //退钱 { string prikey = (string)req.@params[0]; Int64 value = (Int64)req.@params[1]; result = getJAbyKV("result", "success"); } break; case "bet": //下注 { string prikey = (string)req.@params[0]; string seasonid = (string)req.@params[1]; string gameid = (string)req.@params[2]; Int64 value = (Int64)req.@params[3]; result = getJAbyKV("result", "success"); } break; case "take": //领奖 { string prikey = (string)req.@params[0]; string seasonid = (string)req.@params[1]; string gameid = (string)req.@params[2]; result = getJAbyKV("result", "success"); } break; case "getseasoninfo": //获得赛季信息 { string seasonid = (string)req.@params[0]; if (string.IsNullOrEmpty(seasonid)) { } else { } JObject jObject = new JObject(); jObject["seasonid"] = "1"; JArray jArray = new JArray(); for (var i = 1; i < 16; i++) { JObject jObject2 = new JObject(); jObject2["gameid"] = i.ToString(); jObject2["team1"] = i; jObject2["team2"] = i + 1; jObject2["winner"] = i; jArray.Add(jObject2); } jObject["info"] = jArray; result = new JArray() { jObject }; } break; case "getgamestate": //获取比赛状态 { Random rd = new Random(); var i = rd.Next(0, 17); result = getJAbyKV("result", i); } break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); string resultStr = string.Empty; string findFliter = string.Empty; string sortStr = string.Empty; try { point(req.method); switch (req.method) { // 获取服务列表 case "getServiceList": result = daoService.getServiceList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; case "getUserInfo": result = daoService.getUserInfo(req.@params[0].ToString()); break; case "getHashInfoByVoteHash": result = daoService.getHashInfoByVoteHash(req.@params[0].ToString()); break; // 获取治理信息列表(治理) case "getVoteTxHistList": result = daoService.getVoteTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; // 获取治理信息(治理) case "getVoteInfo": result = daoService.getVoteInfo(req.@params[0].ToString()); break; // 获取项目交易历史列表(众筹) case "getProjTxHistList": result = daoService.getProjTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; // 获取项目信息(众筹) case "getProjInfo": result = daoService.getProjInfo(req.@params[0].ToString()); break; // 存储治理信息(治理) case "storeVoteInfo": result = daoService.storeVoteInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString()); break; // 存储项目信息(众筹) case "storeProjInfo": result = daoService.storeProjInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[5].ToString()); break; // test case "getnodetype": result = new JArray { new JObject { { "nodeType", netnode } } }; break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); string resultStr = string.Empty; string findFliter = string.Empty; string sortStr = string.Empty; try { point(req.method); switch (req.method) { case "getTxidFromMemPool": result = neoCliService.getTxidFromMemPool(req.@params[0].ToString()); break; case "getRawMemPoolList": result = neoCliService.getRawMemPoolList(); break; case "getRawMemPoolGroup": result = neoCliService.getRawMemPoolGroup(); break; case "getRawMemPoolCount": if ([email protected] < 1) { result = neoCliService.getRawMemPoolCount(); } else { result = neoCliService.getRawMemPoolCount(req.@params[0].ToString()); } break; case "getnodetype": JArray JA = new JArray { new JObject { { "nodeType", netnode } } }; result = JA; break; case "getcliversion": result = getJAbyKV("cliversion", (string)JObject.Parse(hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getversion','params':[],'id':1}", System.Text.Encoding.UTF8, 1))["result"]["useragent"]); break; case "getclirawmempool": JObject rawmempoolJ = new JObject(); rawmempoolJ.Add("clirawmempool", JObject.Parse(hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getrawmempool','params':[],'id':1}", System.Text.Encoding.UTF8, 1))["result"]); result = getJAbyJ(rawmempoolJ); break; case "getcliblockcount": var resp = hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getblockcount','params':[],'id':1}", System.Text.Encoding.UTF8, 1); string cliResultStr = (string)JObject.Parse(resp)["result"]; result = getJAbyKV("cliblockcount", cliResultStr); break; case "getdatablockheight": result = mh.Getdatablockheight(mongodbConnStr, mongodbDatabase); break; case "getblockcount": //resultStr = "[{blockcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block") + "}]"; result = getJAbyKV("blockcount", (long)(mh.GetData(mongodbConnStr, mongodbDatabase, "system_counter", "{counter:'block'}")[0]["lastBlockindex"]) + 1); break; case "gettxcount": //resultStr = "[{txcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx") + "}]"; //result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx")); findFliter = "{}"; if ([email protected]() > 0) { string type = req.@params[0].ToString(); if (type != null && type != string.Empty) { findFliter = "{type:\"" + type + "\"}"; } } result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx", findFliter)); break; case "getaddrcount": //resultStr = "[{addrcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address") + "}]"; result = getJAbyKV("addrcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address")); break; case "getblock": findFliter = "{index:" + req.@params[0] + "}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter); break; case "getblocktime": findFliter = "{index:" + req.@params[0] + "}"; var time = (Int32)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["time"]; result = getJAbyKV("time", time); break; case "getblocks": long lastBlockindex = (long)(mh.GetData(mongodbConnStr, mongodbDatabase, "system_counter", "{counter:'block'}")[0]["lastBlockindex"]); sortStr = "{index:-1}"; // 15 10 int pageCount = int.Parse(req.@params[0].ToString()); int pageNum = int.Parse(req.@params[1].ToString()); string fieldStr = new JObject() { { "_id", 0 }, { "index", 1 }, { "size", 1 }, { "time", 1 }, { "tx", 1 } }.ToString(); string filter = new JObject() { { "index", new JObject() { { "$gt", lastBlockindex - pageCount * pageNum }, { "$lte", lastBlockindex - pageCount * (pageNum - 1) } } } }.ToString(); result = mh.GetDataPagesWithField(mongodbConnStr, mongodbDatabase, "block", fieldStr, sortStr, pageCount, 1, filter); result = new JArray() { result.Select(p => { JObject jo = (JObject)p; jo.Add("txcount", ((JArray)p["tx"]).Count); jo.Remove("tx"); return(jo); }).ToArray() }; break; case "getrawtransaction": findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter); break; case "getrawtransactions": sortStr = "{blockindex:-1,txid:-1}"; findFliter = "{}"; if ([email protected]() > 2) { string txType = req.@params[2].ToString(); if (txType != null && txType != string.Empty) { findFliter = "{type:'" + txType + "'}"; } } result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "tx", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), findFliter); break; case "getaddrs": sortStr = "{'lastuse.blockindex' : -1,'lastuse.txid' : -1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; case "getaddr": string addr = req.@params[0].ToString(); findFliter = "{addr:'" + addr + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "address", findFliter); break; case "getaddresstxs": string findBson = "{'addr':'" + req.@params[0].ToString() + "'}"; sortStr = "{'blockindex' : -1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address_tx", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findBson); break; case "getasset": findFliter = "{id:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter); break; case "getallasset": findFliter = "{}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter); break; case "getfulllog": findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "fulllog", findFliter); break; case "getnotify": findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "notify", findFliter); break; case "getutxo": if ([email protected]() == 1) { findFliter = "{addr:'" + req.@params[0] + "',used:''}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); } else if ([email protected]() == 2) { if ((Int64)req.@params[1] == 1) { findFliter = "{addr:'" + req.@params[0] + "'}"; } result = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); } else if ([email protected]() == 3) { findFliter = "{addr:'" + req.@params[0] + "',used:''}"; sortStr = "{'createHeight':1,'txid':1,'n':1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "utxo", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findFliter); } else if ([email protected]() == 4) { if ((Int64)req.@params[1] == 1) { findFliter = "{addr:'" + req.@params[0] + "'}"; } sortStr = "{'createHeight':1,'txid':1,'n':1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "utxo", sortStr, int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), findFliter); } break; case "getutxocount": addr = req.@params[0].ToString(); if (addr != null && addr != string.Empty) { findFliter = "{addr:\"" + addr + "\"}"; } result = getJAbyKV("utxocount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "utxo", findFliter)); break; case "getutxostopay": string address = (string)req.@params[0]; string assetID = ((string)req.@params[1]).formatHexStr(); decimal amount = decimal.Parse(req.@params[2].ToString(), NumberStyles.Float); bool isBigFirst = false; //默认先用小的。 if ([email protected]() == 4) { if ((Int64)req.@params[3] == 1) { isBigFirst = true; //加可选参数可以先用大的。 } } findFliter = "{addr:'" + address + "',used:''}"; JArray utxoJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); result = tx.getUtxo2Pay(utxoJA, address, assetID, amount, isBigFirst); break; case "getclaimgasUtxoList": if ([email protected]() == 1) { result = claim.getClaimGasUtxoList(mongodbConnStr, mongodbDatabase, req.@params[0].ToString()); } else if ([email protected]() == 2) { result = claim.getClaimGasUtxoList(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), req.@params[1].ToString() == "1"); } else if ([email protected]() == 4) { result = claim.getClaimGasUtxoList(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), req.@params[1].ToString() == "1", int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); } break; case "getclaimgas": JObject claimsJ = new JObject(); if ([email protected]() == 1) { claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), true); //限制50,默认值 } ; if ([email protected]() == 2) { if ((Int64)req.@params[1] == 1) { claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), false); //限制50,默认值 } } if ([email protected]() == 3) { claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), req.@params[1].ToString() == "0", req.@params[2].ToString() == "0"); //限制50,默认值 } if ([email protected]() == 4) { claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), req.@params[1].ToString() == "0", req.@params[2].ToString() == "0", req.@params[3].ToString() == "0"); //限制50,默认值 } result = getJAbyJ(claimsJ); break; case "getclaimtxhex": string addrClaim = (string)req.@params[0]; JObject claimgasJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, addrClaim, true, false); // 不限制50 if (claimgasJ["errorCode"] != null) { result = getJAbyJ(claimgasJ); } else { result = getJAbyKV("claimtxhex", tx.getClaimTxHex(addrClaim, claimgasJ)); } break; case "getbalance": findFliter = "{addr:'" + req.@params[0] + "',used:''}"; JArray utxos = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); Dictionary <string, decimal> balance = new Dictionary <string, decimal>(); foreach (JObject j in utxos) { if (!balance.ContainsKey((string)j["asset"])) { balance.Add((string)j["asset"], (decimal)j["value"]); } else { balance[(string)j["asset"]] += (decimal)j["value"]; } } JArray balanceJA = new JArray(); foreach (KeyValuePair <string, decimal> kv in balance) { JObject j = new JObject(); j.Add("asset", kv.Key); j.Add("balance", kv.Value); JObject asset = (JObject)mh.GetData(mongodbConnStr, mongodbDatabase, "asset", "{id:'" + kv.Key + "'}")[0]; JArray name = (JArray)asset["name"]; j.Add("name", name); balanceJA.Add(j); } result = balanceJA; break; case "getcontractscript": findFliter = "{hash:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", findFliter); break; case "gettransfertxhex": string addrOut = (string)req.@params[0]; findFliter = "{addr:'" + addrOut + "',used:''}"; JArray outputJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); result = getJAbyKV("transfertxhex", tx.getTransferTxHex(outputJA, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString(), NumberStyles.Float))); //result = new JArray //{ // new JObject // { // { // "transfertxhex", // tx.getTransferTxHex(outputJA,(string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString())) // } // } //}; break; case "sendtxplussign": result = getJAbyJ(tx.sendTxPlusSign(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2])); break; case "verifytxsign": result = getJAbyKV("sign", tx.verifyTxSign((string)req.@params[0], (string)req.@params[1])); break; case "sendrawtransaction": result = getJAbyJ(tx.sendrawtransaction(neoCliJsonRPCUrl, (string)req.@params[0])); //result = new JArray //{ // new JObject // { // { // "sendrawtransactionresult", // tx.sendrawtransaction(neoCliJsonRPCUrl,(string)req.@params[0]) // } // } //}; break; case "getcontractstate": result = getJAbyJ(ct.getContractState(neoCliJsonRPCUrl, (string)req.@params[0])); break; case "invokescript": result = getJAbyJ(ct.invokeScript(neoCliJsonRPCUrl, (string)req.@params[0])); break; case "callcontractfortest": result = getJAbyJ(ct.callContractForTest(neoCliJsonRPCUrl, new List <string> { (string)req.@params[0] }, new JArray() { (JArray)req.@params[1] })); break; case "publishcontractfortest": result = getJAbyJ(ct.publishContractForTest(neoCliJsonRPCUrl, (string)req.@params[0], (JObject)req.@params[1])); break; case "getinvoketxhex": string addrPayFee = (string)req.@params[0]; findFliter = "{addr:'" + addrPayFee + "',used:''}"; JArray outputJAPayFee = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); string invokeScript = (string)req.@params[1]; decimal invokeScriptFee = decimal.Parse(req.@params[2].ToString(), NumberStyles.Float); result = getJAbyKV("invoketxhex", tx.getInvokeTxHex(outputJAPayFee, addrPayFee, invokeScript, invokeScriptFee)); break; case "getstorage": result = getJAbyJ(ct.getStorage(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1])); break; case "setcontractscript": JObject J = JObject.Parse((string)req.@params[0]); string hash = (string)J["hash"]; //string hash = (string)req.@params[0]; //J.Add("hash", hash); //J.Add("avm", (string)req.@params[1]); //J.Add("cs", (string)req.@params[2]); //string mapStr = (string)req.@params[3]; //string abiStr = (string)req.@params[4]; //if (mapStr != null && mapStr != string.Empty) //{ // J.Add("map", JArray.Parse((string)req.@params[3])); //} //else //{ // J.Add("map", string.Empty); //} //if (abiStr != null && abiStr != string.Empty) //{ // J.Add("abi", JObject.Parse((string)req.@params[4])); //} //else //{ // J.Add("abi", string.Empty); //} J.Add("requestIP", reqAddr); mh.InsertOneDataByCheckKey(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", J, "hash", hash); result = getJAbyKV("isSetSuccess", true); //result = new JArray //{ // new JObject{ // { "isSetSuccess",true } // } //}; break; case "getnep5balanceofaddress": string NEP5scripthash = (string)req.@params[0]; if (!NEP5scripthash.StartsWith("0x")) { NEP5scripthash = "0x" + NEP5scripthash; } string NEP5address = (string)req.@params[1]; byte[] NEP5addrHash = ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5address); string NEP5addrHashHex = ThinNeo.Helper.Bytes2HexString(NEP5addrHash.Reverse().ToArray()); JObject NEP5balanceOfJ = ct.callContractForTest(neoCliJsonRPCUrl, new List <string> { NEP5scripthash }, new JArray() { JArray.Parse("['(str)balanceOf',['(hex)" + NEP5addrHashHex + "']]") }); string balanceStr = (string)((JArray)NEP5balanceOfJ["stack"])[0]["value"]; string balanceType = (string)((JArray)NEP5balanceOfJ["stack"])[0]["type"]; string balanceBigint = "0"; if (balanceStr != string.Empty) { //获取NEP5资产信息,获取精度 NEP5.Asset NEP5asset = new NEP5.Asset(mongodbConnStr, mongodbDatabase, NEP5scripthash); balanceBigint = NEP5.getNumStrFromStr(balanceType, balanceStr, NEP5asset.decimals); } result = getJAbyKV("nep5balance", balanceBigint); break; case "getnep5transfersbyasset": /** * string str_asset = ((string)req.@params[0]).formatHexStr(); * findFliter = "{asset:'" + str_asset + "'}"; * //sortStr = "{'blockindex':1,'txid':1,'n':1}"; * sortStr = "{}"; * if ([email protected]() ==3) * result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findFliter); * else * result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer",findFliter); */ result = assetService.getnep5transfersbyasset(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "getnep5count": /** * findFliter = "{}"; * if ([email protected]() == 2) * { * string key = (string)req.@params[0]; * string value = (string)req.@params[1]; * findFliter = "{\"" + key + "\":\"" + value + "\"}"; * } * result = getJAbyKV("nep5count", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter)); */ if ([email protected] == 2) { result = assetService.getnep5count(req.@params[0].ToString(), req.@params[1].ToString()); break; } result = assetService.getnep5count(); break; case "getallnep5assetofaddress": /** * string NEP5addr = (string)req.@params[0]; * bool isNeedBalance = false; * if ([email protected]() > 1) * { * isNeedBalance = ((Int64)req.@params[1] == 1) ? true : false; * } * * //按资产汇集收到的钱(仅资产ID) * string findTransferTo = "{ to:'" + NEP5addr + "'}"; * JArray transferToJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findTransferTo); * List<NEP5.Transfer> tfts = new List<NEP5.Transfer>(); * foreach (JObject tfJ in transferToJA) * { * tfts.Add(new NEP5.Transfer(tfJ)); * } * var queryTo = from tft in tfts * group tft by tft.asset into tftG * select new { assetid = tftG.Key}; * var assetAdds = queryTo.ToList(); * * //如果需要余额,则通过cli RPC批量获取余额 * List<NEP5.AssetBalanceOfAddr> addrAssetBalances = new List<NEP5.AssetBalanceOfAddr>(); * if (isNeedBalance) { * List<NEP5.AssetBalanceOfAddr> addrAssetBalancesTemp = new List<NEP5.AssetBalanceOfAddr>(); * foreach (var assetAdd in assetAdds) * { * string findNep5Asset = "{assetid:'" + assetAdd.assetid + "'}"; * JArray Nep5AssetJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findNep5Asset); * string Symbol = (string)Nep5AssetJA[0]["symbol"]; * resp = hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getcontractstate','params':['" + assetAdd.assetid + "'],'id':1}", System.Text.Encoding.UTF8, 1); * JObject resultJ = (JObject)JObject.Parse(resp)["result"]; * if (resultJ == null) * continue; * * addrAssetBalancesTemp.Add(new NEP5.AssetBalanceOfAddr(assetAdd.assetid, Symbol, string.Empty)); * } * * List<string> nep5Hashs = new List<string>(); * JArray queryParams = new JArray(); * byte[] NEP5allAssetOfAddrHash = ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5addr); * string NEP5allAssetOfAddrHashHex = ThinNeo.Helper.Bytes2HexString(NEP5allAssetOfAddrHash.Reverse().ToArray()); * foreach (var abt in addrAssetBalancesTemp) * { * nep5Hashs.Add(abt.assetid); * queryParams.Add(JArray.Parse("['(str)balanceOf',['(hex)" + NEP5allAssetOfAddrHashHex + "']]")); * } * JArray NEP5allAssetBalanceJA = (JArray)ct.callContractForTestMulti(neoCliJsonRPCUrl, nep5Hashs, queryParams)["stack"]; * var a = Newtonsoft.Json.JsonConvert.SerializeObject(NEP5allAssetBalanceJA); * foreach (var abt in addrAssetBalancesTemp) * { * /// ChangeLog: * /// 升级智能合约带来的数据结构不一致问题,暂时使用try方式临时解决 * try * { * string allBalanceStr = (string)NEP5allAssetBalanceJA[addrAssetBalancesTemp.IndexOf(abt)]["value"]; * string allBalanceType = (string)NEP5allAssetBalanceJA[addrAssetBalancesTemp.IndexOf(abt)]["type"]; * * //获取NEP5资产信息,获取精度 * NEP5.Asset NEP5asset = new NEP5.Asset(mongodbConnStr, mongodbDatabase, abt.assetid); * * abt.balance = NEP5.getNumStrFromStr(allBalanceType, allBalanceStr, NEP5asset.decimals); * } catch (Exception e) * { * Console.WriteLine(abt.assetid +",ConvertTypeFailed,errMsg:"+e.Message); * abt.balance = string.Empty; * } * } * * //去除余额为0的资产 * foreach (var abt in addrAssetBalancesTemp) * { * if (abt.balance != string.Empty && abt.balance != "0") * { * addrAssetBalances.Add(abt); * } * } * } * * ////按资产汇集支出的钱 * //string findTransferFrom = "{ from:'" + NEP5addr + "'}"; * //JArray transferFromJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findTransferFrom); * //List<NEP5.Transfer> tffs = new List<NEP5.Transfer>(); * //foreach (JObject tfJ in transferFromJA) * //{ * // tffs.Add(new NEP5.Transfer(tfJ)); * //} * //var queryFrom = from tff in tffs * // group tff by tff.asset into tffG * // select new { assetid = tffG.Key, sumOfValue = tffG.Sum(m => m.value) }; * //var assetRemoves = queryFrom.ToList(); * * ////以支出的钱扣减收到的钱得到余额 * //JArray JAadds = JArray.FromObject(assetAdds); * //foreach (JObject Jadd in JAadds) { * // foreach (var assetRemove in assetRemoves) * // { * // if ((string)Jadd["assetid"] == assetRemove.assetid) * // { * // Jadd["sumOfValue"] = (decimal)Jadd["sumOfValue"] - assetRemove.sumOfValue; * // break; * // } * // } * //} * //var a = Newtonsoft.Json.JsonConvert.SerializeObject(JAadds); * * //*********** * //经简单测试,仅看transfer记录,所有to减去所有from并不一定等于合约查询得到的地址余额(可能有其他非标方法消耗了余额,尤其是测试网),废弃这种方法,还是采用调用NEP5合约获取地址余额方法的方式 * //这里给出所有该地址收到过的资产hash,可以配合其他接口获取资产信息和余额 * //*********** * if (!isNeedBalance) * { * result = JArray.FromObject(assetAdds); * } * else * { * result = JArray.FromObject(addrAssetBalances); * } */ if ([email protected] == 2) { result = assetService.getallnep5assetofaddress( req.@params[0].ToString(), int.Parse(req.@params[1].ToString())); break; } result = assetService.getallnep5assetofaddress(req.@params[0].ToString()); break; case "getnep5asset": /** * findFliter = "{assetid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; * var bytes_totalSupply = (string)ct.callContractForTest(neoCliJsonRPCUrl, new List<string> { (string)req.@params[0] }, new JArray() { JArray.Parse("['(str)totalSupply',[]]") })["stack"][0]["value"]; * var totalSupply = new BigInteger(ThinNeo.Helper.HexString2Bytes(bytes_totalSupply)); * var data = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findFliter); * var decimals = (double)data[0]["decimals"]; * data[0]["totalsupply"] = decimal.Parse( ((double)totalSupply / Math.Pow(10, decimals)).ToString(),NumberStyles.Float); * result = data; */ result = assetService.getnep5asset(req.@params[0].ToString()); break; case "getallnep5asset": /** * findFliter = "{}"; * result = mh.GetData(block_mongodbConnStr, block_mongodbDatabase, NEP5assetCol, findFliter); * break; */ result = assetService.getallnep5asset(); break; // case "getnep5transferbytxid": string txid = ((string)req.@params[0]).formatHexStr(); findFliter = "{txid:'" + txid + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter); break; case "getnep5transferbyaddress": //sortStr = "{'blockindex':1,'txid':1,'n':1}"; sortStr = "{}"; string NEP5transferAddress = (string)req.@params[0]; string NEP5transferAddressType = (string)req.@params[1]; findFliter = "{'" + NEP5transferAddressType + "':'" + NEP5transferAddress + "'}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), findFliter); break; case "getnep5transfers": //sortStr = "{'blockindex':1,'txid':1,'n':1}"; sortStr = "{}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; case "getnep5transferbyblockindex": Int64 blockindex = (Int64)req.@params[0]; findFliter = "{blockindex:" + blockindex + "}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter); break; case "getaddresstxbyblockindex": blockindex = (Int64)req.@params[0]; findFliter = "{blockindex:" + blockindex + "}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "address_tx", findFliter); break; case "gettxinfo": txid = ((string)req.@params[0]).formatHexStr(); findFliter = "{txid:'" + (txid).formatHexStr() + "'}"; JArray JATx = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter); JObject JOTx = (JObject)JATx[0]; var heightforblock = (int)JOTx["blockindex"]; var indexforblock = -1; findFliter = "{index:" + heightforblock + "}"; result = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"]; for (var i = 0; i < result.Count; i++) { JObject Jo = (JObject)result[i]; if (txid == (string)Jo["txid"]) { indexforblock = i; } } JObject JOresult = new JObject(); JOresult["heightforblock"] = heightforblock; JOresult["indexforblock"] = indexforblock; result = new JArray() { JOresult }; break; case "uxtoinfo": var starttxid = ((string)req.@params[0]).formatHexStr(); var voutN = (Int64)req.@params[1]; findFliter = "{txid:'" + (starttxid).formatHexStr() + "'}"; JATx = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter); JOTx = (JObject)JATx[0]; int starttxblockheight = (int)JOTx["blockindex"]; int starttxblockindex = -1; findFliter = "{index:" + starttxblockheight + "}"; result = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"]; for (var i = 0; i < result.Count; i++) { JObject Jo = (JObject)result[i]; if (starttxid == (string)Jo["txid"]) { starttxblockindex = i; } } //根据txid和n获取utxo信息 findFliter = "{txid:\"" + starttxid + "\",n:" + voutN + "}"; var endtxid = (string)mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter)[0]["used"]; int endtxblockheight = -1; int endtxblockindex = -1; int vinputN = -1; if (!string.IsNullOrEmpty(endtxid)) { findFliter = "{txid:'" + (endtxid).formatHexStr() + "'}"; JATx = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter); JOTx = (JObject)JATx[0]; endtxblockheight = (int)JOTx["blockindex"]; JArray JAvin = (JArray)JOTx["vin"]; findFliter = "{index:" + endtxblockheight + "}"; result = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"]; for (var i = 0; i < result.Count; i++) { JObject Jo = (JObject)result[i]; if (endtxid == (string)Jo["txid"]) { endtxblockindex = i; } } for (var i = 0; i < JAvin.Count; i++) { JObject Jo = (JObject)JAvin[i]; if ((string)Jo["txid"] == starttxid && voutN == i) { vinputN = i; } } } else { } JOresult = new JObject(); JOresult["starttxid"] = starttxid; JOresult["starttxblockheight"] = starttxblockheight; JOresult["starttxblockindex"] = starttxblockindex; JOresult["voutN"] = voutN; JOresult["endtxid"] = endtxid; JOresult["endtxblockheight"] = endtxblockheight; JOresult["endtxblockindex"] = endtxblockindex; JOresult["vinputN"] = vinputN; result = new JArray() { JOresult }; break; // ChangeLog: 新增获取notify接口 case "getnotifycounter": result = notifyService.getNotifyCounter(); break; case "getnotifybyhash": var cc = [email protected](); if ([email protected]() < 3) { result = notifyService.getNotifyByHash(JArray.Parse(req.@params[1].ToString()), int.Parse(req.@params[0].ToString())); } else { result = notifyService.getNotifyByHash(JArray.Parse(req.@params[2].ToString()), int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } break; case "getBlockInfo": JArray filterJA = null; if ([email protected]() > 0) { filterJA = JArray.Parse(req.@params[0].ToString()); } result = notifyService.getBlockInfo(filterJA); break; case "getNep5AssetInfo": result = notifyService.getNep5AssetInfo(JArray.Parse(req.@params[0].ToString())); break; } if (result != null && result.Count > 0 && result[0]["errorCode"] != null) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, (int)result[0]["errorCode"], (string)result[0]["errorMsg"], (string)result[0]["errorData"]); return(resE); } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); string resultStr = string.Empty; string findFliter = string.Empty; string sortStr = string.Empty; try { point(req.method); switch (req.method) { // dex case "verifyEmail": result = dexService.verifyEmail(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "clearEmail": result = dexService.clearEmail(req.@params[0].ToString(), req.@params[1].ToString()); break; case "bindEmail": result = dexService.bindEmail(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getEmailState": result = dexService.getEmailState(req.@params[0].ToString()); break; case "hasStarDomain": result = dexService.hasStarDomain(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getStarDomainList": result = dexService.getStarDomainList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "getStarDomainCount": result = dexService.getStarDomainCount(req.@params[0].ToString()); break; case "starDexDomain": //result = dexService.starDexDomain(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); result = dexService.starDexDomain(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), req.@params[2].ToString(), req.@params[3].ToString()); break; case "searchDexDomainLikeInfo": result = dexService.searchDexDomainLikeInfo(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "searchDexDomainInfo": result = dexService.searchDexDomainInfo(req.@params[0].ToString()); break; case "getOrderRange": result = dexService.getOrderRange(decimal.Parse(req.@params[0].ToString())); break; case "getDexDomainList": result = dexService.getDexDomainList(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), int.Parse(req.@params[4].ToString()), int.Parse(req.@params[5].ToString())); break; case "getDexDomainCanUseList": result = dexService.getDexDomainCanUseList(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "getDexDomainInfo": result = dexService.getDexDomainInfo(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getDexDomainOrder": result = dexService.getDexDomainOrder(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "getDexDomainBuyOther": result = dexService.getDexDomainBuyOther(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getDexDomainBuyDetail": result = dexService.getDexDomainBuyDetail(req.@params[0].ToString()); break; case "getDexDomainSellOther": result = dexService.getDexDomainSellOther(req.@params[0].ToString()); break; case "getDexDomainSellDetail": result = dexService.getDexDomainSellDetail(req.@params[0].ToString()); break; case "getDexDomainDealHistList": result = dexService.getDexDomainDealHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString()); break; case "getDexDomainBuyList": result = dexService.getDexDomainBuyList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString()); break; case "getDexDomainSellList": result = dexService.getDexDomainSellList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString()); break; case "getBalanceFromDex": result = dexService.getBalanceFromDex(req.@params[0].ToString()); break; // test case "getnodetype": result = new JArray { new JObject { { "nodeType", netnode } } }; break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); string resultStr = string.Empty; string findFliter = string.Empty; string sortStr = string.Empty; try { switch (req.method) { case "getnodetype": JArray JA = new JArray { new JObject { { "nodeType", netnode } } }; result = JA; break; case "getdatablockheight": result = mh.Getdatablockheight(mongodbConnStr, mongodbDatabase); break; case "getblockcount": //resultStr = "[{blockcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block") + "}]"; result = getJAbyKV("blockcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block")); break; case "getcliblockcount": var resp = hh.Post(neoCliJsonRPCUrl, "{'jsonrpc':'2.0','method':'getblockcount','params':[],'id':1}", System.Text.Encoding.UTF8, 1); string cliResultStr = (string)JObject.Parse(resp)["result"]; result = getJAbyKV("cliblockcount", cliResultStr); break; case "gettxcount": //resultStr = "[{txcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx") + "}]"; //result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx")); findFliter = "{}"; if ([email protected]() > 0) { string type = req.@params[0].ToString(); if (type != null && type != string.Empty) { findFliter = "{type:\"" + type + "\"}"; } } result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx", findFliter)); break; case "getaddrcount": //resultStr = "[{addrcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address") + "}]"; result = getJAbyKV("addrcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address")); break; case "getblock": findFliter = "{index:" + req.@params[0] + "}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter); break; case "getblocktime": findFliter = "{index:" + req.@params[0] + "}"; var time = (Int32)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["time"]; result = getJAbyKV("time", time); break; case "getblocks": sortStr = "{index:-1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "block", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; case "getrawtransaction": findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter); break; case "getrawtransactions": sortStr = "{blockindex:-1,txid:-1}"; findFliter = "{}"; if ([email protected]() > 2) { string txType = req.@params[2].ToString(); if (txType != null && txType != string.Empty) { findFliter = "{type:'" + txType + "'}"; } } result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "tx", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), findFliter); break; case "getaddrs": sortStr = "{'lastuse.blockindex' : -1,'lastuse.txid' : -1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; case "getaddr": string addr = req.@params[0].ToString(); findFliter = "{addr:'" + addr + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "address", findFliter); break; case "getaddresstxs": string findBson = "{'addr':'" + req.@params[0].ToString() + "'}"; sortStr = "{'blockindex' : -1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address_tx", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findBson); break; case "getasset": findFliter = "{id:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter); break; case "getallasset": findFliter = "{}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter); break; case "getfulllog": findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "fulllog", findFliter); break; case "getnotify": findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "notify", findFliter); break; case "getutxo": if ([email protected]() == 1) { findFliter = "{addr:'" + req.@params[0] + "',used:''}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); } else if ([email protected]() == 2) { if ((Int64)req.@params[1] == 1) { findFliter = "{addr:'" + req.@params[0] + "'}"; } result = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); } else if ([email protected]() == 3) { findFliter = "{addr:'" + req.@params[0] + "',used:''}"; sortStr = "{'createHeight':1,'txid':1,'n':1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "utxo", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findFliter); } else if ([email protected]() == 4) { if ((Int64)req.@params[1] == 1) { findFliter = "{addr:'" + req.@params[0] + "'}"; } sortStr = "{'createHeight':1,'txid':1,'n':1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "utxo", sortStr, int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), findFliter); } break; case "getutxocount": addr = req.@params[0].ToString(); if (addr != null && addr != string.Empty) { findFliter = "{addr:\"" + addr + "\"}"; } result = getJAbyKV("utxocount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "utxo", findFliter)); break; case "getutxostopay": string address = (string)req.@params[0]; string assetID = ((string)req.@params[1]).formatHexStr(); decimal amount = decimal.Parse(req.@params[2].ToString()); bool isBigFirst = false; //默认先用小的。 if ([email protected]() == 4) { if ((Int64)req.@params[3] == 1) { isBigFirst = true; //加可选参数可以先用大的。 } } findFliter = "{addr:'" + address + "',used:''}"; JArray utxoJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); result = tx.getUtxo2Pay(utxoJA, address, assetID, amount, isBigFirst); break; case "getclaimgas": JObject claimsJ = new JObject(); if ([email protected]() == 1) { claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString()); } ; if ([email protected]() == 2) { if ((Int64)req.@params[1] == 1) { claimsJ = claim.getClaimGas(mongodbConnStr, mongodbDatabase, req.@params[0].ToString(), false); } } result = getJAbyJ(claimsJ); break; case "getclaimtxhex": string addrClaim = (string)req.@params[0]; result = getJAbyKV("claimtxhex", tx.getClaimTxHex(addrClaim, claim.getClaimGas(mongodbConnStr, mongodbDatabase, addrClaim))); break; case "getbalance": findFliter = "{addr:'" + req.@params[0] + "',used:''}"; JArray utxos = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); Dictionary <string, decimal> balance = new Dictionary <string, decimal>(); foreach (JObject j in utxos) { if (!balance.ContainsKey((string)j["asset"])) { balance.Add((string)j["asset"], (decimal)j["value"]); } else { balance[(string)j["asset"]] += (decimal)j["value"]; } } JArray balanceJA = new JArray(); foreach (KeyValuePair <string, decimal> kv in balance) { JObject j = new JObject(); j.Add("asset", kv.Key); j.Add("balance", kv.Value); JObject asset = (JObject)mh.GetData(mongodbConnStr, mongodbDatabase, "asset", "{id:'" + kv.Key + "'}")[0]; JArray name = (JArray)asset["name"]; j.Add("name", name); balanceJA.Add(j); } result = balanceJA; break; case "getcontractscript": findFliter = "{hash:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", findFliter); break; case "gettransfertxhex": string addrOut = (string)req.@params[0]; findFliter = "{addr:'" + addrOut + "',used:''}"; JArray outputJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); result = getJAbyKV("transfertxhex", tx.getTransferTxHex(outputJA, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString()))); //result = new JArray //{ // new JObject // { // { // "transfertxhex", // tx.getTransferTxHex(outputJA,(string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString())) // } // } //}; break; case "sendtxplussign": result = getJAbyJ(tx.sendTxPlusSign(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2])); break; case "verifytxsign": result = getJAbyKV("sign", tx.verifyTxSign((string)req.@params[0], (string)req.@params[1])); break; case "sendrawtransaction": result = getJAbyJ(tx.sendrawtransaction(neoCliJsonRPCUrl, (string)req.@params[0])); //result = new JArray //{ // new JObject // { // { // "sendrawtransactionresult", // tx.sendrawtransaction(neoCliJsonRPCUrl,(string)req.@params[0]) // } // } //}; break; case "getcontractstate": result = getJAbyJ(ct.getContractState(neoCliJsonRPCUrl, (string)req.@params[0])); break; case "invokescript": result = getJAbyJ(ct.invokeScript(neoCliJsonRPCUrl, (string)req.@params[0])); break; case "callcontractfortest": result = getJAbyJ(ct.callContractForTest(neoCliJsonRPCUrl, new List <string> { (string)req.@params[0] }, new JArray() { (JArray)req.@params[1] })); break; case "publishcontractfortest": result = getJAbyJ(ct.publishContractForTest(neoCliJsonRPCUrl, (string)req.@params[0], (JObject)req.@params[1])); break; case "getinvoketxhex": string addrPayFee = (string)req.@params[0]; findFliter = "{addr:'" + addrPayFee + "',used:''}"; JArray outputJAPayFee = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); string invokeScript = (string)req.@params[1]; decimal invokeScriptFee = decimal.Parse(req.@params[2].ToString()); result = getJAbyKV("invoketxhex", tx.getInvokeTxHex(outputJAPayFee, addrPayFee, invokeScript, invokeScriptFee)); break; case "getstorage": result = getJAbyJ(ct.getStorage(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1])); break; case "setcontractscript": JObject J = JObject.Parse((string)req.@params[0]); string hash = (string)J["hash"]; //string hash = (string)req.@params[0]; //J.Add("hash", hash); //J.Add("avm", (string)req.@params[1]); //J.Add("cs", (string)req.@params[2]); //string mapStr = (string)req.@params[3]; //string abiStr = (string)req.@params[4]; //if (mapStr != null && mapStr != string.Empty) //{ // J.Add("map", JArray.Parse((string)req.@params[3])); //} //else //{ // J.Add("map", string.Empty); //} //if (abiStr != null && abiStr != string.Empty) //{ // J.Add("abi", JObject.Parse((string)req.@params[4])); //} //else //{ // J.Add("abi", string.Empty); //} J.Add("requestIP", reqAddr); mh.InsertOneDataByCheckKey(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", J, "hash", hash); result = getJAbyKV("isSetSuccess", true); //result = new JArray //{ // new JObject{ // { "isSetSuccess",true } // } //}; break; case "getnep5balanceofaddress": string NEP5scripthash = (string)req.@params[0]; string NEP5address = (string)req.@params[1]; byte[] NEP5addrHash = ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5address); string NEP5addrHashHex = ThinNeo.Helper.Bytes2HexString(NEP5addrHash.Reverse().ToArray()); JObject NEP5balanceOfJ = ct.callContractForTest(neoCliJsonRPCUrl, new List <string> { NEP5scripthash }, new JArray() { JArray.Parse("['(str)balanceOf',['(hex)" + NEP5addrHashHex + "']]") }); string balanceStr = (string)((JArray)NEP5balanceOfJ["stack"])[0]["value"]; string balanceType = (string)((JArray)NEP5balanceOfJ["stack"])[0]["type"]; string balanceBigint = "0"; if (balanceStr != string.Empty) { //获取NEP5资产信息,获取精度 NEP5.Asset NEP5asset = new NEP5.Asset(mongodbConnStr, mongodbDatabase, NEP5scripthash); balanceBigint = NEP5.getNumStrFromStr(balanceType, balanceStr, NEP5asset.decimals); } result = getJAbyKV("nep5balance", balanceBigint); break; case "getallnep5assetofaddress": string NEP5addr = (string)req.@params[0]; bool isNeedBalance = false; if ([email protected]() > 1) { isNeedBalance = ((Int64)req.@params[1] == 1) ? true : false; } //按资产汇集收到的钱(仅资产ID) string findTransferTo = "{ to:'" + NEP5addr + "'}"; JArray transferToJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findTransferTo); List <NEP5.Transfer> tfts = new List <NEP5.Transfer>(); foreach (JObject tfJ in transferToJA) { tfts.Add(new NEP5.Transfer(tfJ)); } var queryTo = from tft in tfts group tft by tft.asset into tftG select new { assetid = tftG.Key }; var assetAdds = queryTo.ToList(); //如果需要余额,则通过cli RPC批量获取余额 List <NEP5.AssetBalanceOfAddr> addrAssetBalances = new List <NEP5.AssetBalanceOfAddr>(); if (isNeedBalance) { List <NEP5.AssetBalanceOfAddr> addrAssetBalancesTemp = new List <NEP5.AssetBalanceOfAddr>(); foreach (var assetAdd in assetAdds) { string findNep5Asset = "{assetid:'" + assetAdd.assetid + "'}"; JArray Nep5AssetJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findNep5Asset); string Symbol = (string)Nep5AssetJA[0]["symbol"]; addrAssetBalancesTemp.Add(new NEP5.AssetBalanceOfAddr(assetAdd.assetid, Symbol, string.Empty)); } List <string> nep5Hashs = new List <string>(); JArray queryParams = new JArray(); byte[] NEP5allAssetOfAddrHash = ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5addr); string NEP5allAssetOfAddrHashHex = ThinNeo.Helper.Bytes2HexString(NEP5allAssetOfAddrHash.Reverse().ToArray()); foreach (var abt in addrAssetBalancesTemp) { nep5Hashs.Add(abt.assetid); queryParams.Add(JArray.Parse("['(str)balanceOf',['(hex)" + NEP5allAssetOfAddrHashHex + "']]")); } JArray NEP5allAssetBalanceJA = (JArray)ct.callContractForTest(neoCliJsonRPCUrl, nep5Hashs, queryParams)["stack"]; var a = Newtonsoft.Json.JsonConvert.SerializeObject(NEP5allAssetBalanceJA); foreach (var abt in addrAssetBalancesTemp) { string allBalanceStr = (string)NEP5allAssetBalanceJA[addrAssetBalancesTemp.IndexOf(abt)]["value"]; string allBalanceType = (string)NEP5allAssetBalanceJA[addrAssetBalancesTemp.IndexOf(abt)]["type"]; //获取NEP5资产信息,获取精度 NEP5.Asset NEP5asset = new NEP5.Asset(mongodbConnStr, mongodbDatabase, abt.assetid); abt.balance = NEP5.getNumStrFromStr(allBalanceType, allBalanceStr, NEP5asset.decimals); } //去除余额为0的资产 foreach (var abt in addrAssetBalancesTemp) { if (abt.balance != string.Empty && abt.balance != "0") { addrAssetBalances.Add(abt); } } } ////按资产汇集支出的钱 //string findTransferFrom = "{ from:'" + NEP5addr + "'}"; //JArray transferFromJA = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findTransferFrom); //List<NEP5.Transfer> tffs = new List<NEP5.Transfer>(); //foreach (JObject tfJ in transferFromJA) //{ // tffs.Add(new NEP5.Transfer(tfJ)); //} //var queryFrom = from tff in tffs // group tff by tff.asset into tffG // select new { assetid = tffG.Key, sumOfValue = tffG.Sum(m => m.value) }; //var assetRemoves = queryFrom.ToList(); ////以支出的钱扣减收到的钱得到余额 //JArray JAadds = JArray.FromObject(assetAdds); //foreach (JObject Jadd in JAadds) { // foreach (var assetRemove in assetRemoves) // { // if ((string)Jadd["assetid"] == assetRemove.assetid) // { // Jadd["sumOfValue"] = (decimal)Jadd["sumOfValue"] - assetRemove.sumOfValue; // break; // } // } //} //var a = Newtonsoft.Json.JsonConvert.SerializeObject(JAadds); //*********** //经简单测试,仅看transfer记录,所有to减去所有from并不一定等于合约查询得到的地址余额(可能有其他非标方法消耗了余额,尤其是测试网),废弃这种方法,还是采用调用NEP5合约获取地址余额方法的方式 //这里给出所有该地址收到过的资产hash,可以配合其他接口获取资产信息和余额 //*********** if (!isNeedBalance) { result = JArray.FromObject(assetAdds); } else { result = JArray.FromObject(addrAssetBalances); } break; case "getnep5asset": findFliter = "{assetid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findFliter); break; case "getallnep5asset": findFliter = "{}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5asset", findFliter); break; case "getnep5transferbytxid": string txid = ((string)req.@params[0]).formatHexStr(); findFliter = "{txid:'" + txid + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter); break; case "getnep5transferbyaddress": sortStr = "{'blockindex':1,'txid':1,'n':1}"; string NEP5transferAddress = (string)req.@params[0]; string NEP5transferAddressType = (string)req.@params[1]; findFliter = "{'" + NEP5transferAddressType + "':'" + NEP5transferAddress + "'}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), findFliter); break; case "getnep5transfers": sortStr = "{'blockindex':1,'txid':1,'n':1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; case "getnep5transfersbyasset": string str_asset = ((string)req.@params[0]).formatHexStr(); findFliter = "{asset:'" + str_asset + "'}"; sortStr = "{'blockindex':1,'txid':1,'n':1}"; if ([email protected]() == 3) { result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "NEP5transfer", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findFliter); } else { result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter); } break; case "getnep5count": findFliter = "{}"; if ([email protected]() == 2) { string key = (string)req.@params[0]; string value = (string)req.@params[1]; findFliter = "{\"" + key + "\":\"" + value + "\"}"; } result = getJAbyKV("nep5count", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter)); break; case "getnep5transferbyblockindex": Int64 blockindex = (Int64)req.@params[0]; findFliter = "{blockindex:" + blockindex + "}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "NEP5transfer", findFliter); break; case "getaddresstxbyblockindex": blockindex = (Int64)req.@params[0]; findFliter = "{blockindex:" + blockindex + "}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "address_tx", findFliter); break; case "gettxinfo": txid = ((string)req.@params[0]).formatHexStr(); findFliter = "{txid:'" + (txid).formatHexStr() + "'}"; JArray JATx = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter); JObject JOTx = (JObject)JATx[0]; var heightforblock = (int)JOTx["blockindex"]; var indexforblock = -1; findFliter = "{index:" + heightforblock + "}"; result = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"]; for (var i = 0; i < result.Count; i++) { JObject Jo = (JObject)result[i]; if (txid == (string)Jo["txid"]) { indexforblock = i; } } JObject JOresult = new JObject(); JOresult["heightforblock"] = heightforblock; JOresult["indexforblock"] = indexforblock; result = new JArray() { JOresult }; break; case "uxtoinfo": var starttxid = ((string)req.@params[0]).formatHexStr(); var voutN = (Int64)req.@params[1]; findFliter = "{txid:'" + (starttxid).formatHexStr() + "'}"; JATx = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter); JOTx = (JObject)JATx[0]; int starttxblockheight = (int)JOTx["blockindex"]; int starttxblockindex = -1; findFliter = "{index:" + starttxblockheight + "}"; result = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"]; for (var i = 0; i < result.Count; i++) { JObject Jo = (JObject)result[i]; if (starttxid == (string)Jo["txid"]) { starttxblockindex = i; } } //根据txid和n获取utxo信息 findFliter = "{txid:\"" + starttxid + "\",n:" + voutN + "}"; var endtxid = (string)mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter)[0]["used"]; int endtxblockheight = -1; int endtxblockindex = -1; int vinputN = -1; if (!string.IsNullOrEmpty(endtxid)) { findFliter = "{txid:'" + (endtxid).formatHexStr() + "'}"; JATx = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter); JOTx = (JObject)JATx[0]; endtxblockheight = (int)JOTx["blockindex"]; JArray JAvin = (JArray)JOTx["vin"]; findFliter = "{index:" + endtxblockheight + "}"; result = (JArray)mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter)[0]["tx"]; for (var i = 0; i < result.Count; i++) { JObject Jo = (JObject)result[i]; if (endtxid == (string)Jo["txid"]) { endtxblockindex = i; } } for (var i = 0; i < JAvin.Count; i++) { JObject Jo = (JObject)JAvin[i]; if ((string)Jo["txid"] == starttxid && voutN == i) { vinputN = i; } } } else { } JOresult = new JObject(); JOresult["starttxid"] = starttxid; JOresult["starttxblockheight"] = starttxblockheight; JOresult["starttxblockindex"] = starttxblockindex; JOresult["voutN"] = voutN; JOresult["endtxid"] = endtxid; JOresult["endtxblockheight"] = endtxblockheight; JOresult["endtxblockindex"] = endtxblockindex; JOresult["vinputN"] = vinputN; result = new JArray() { JOresult }; break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); string resultStr = string.Empty; string findFliter = string.Empty; string sortStr = string.Empty; try { switch (req.method) { case "getnoderpcapi": JArray JA = new JArray { new JObject { { "nodeType", netnode }, { "nodeList", new JArray { neoCliJsonRPCUrl } } } }; result = JA; break; case "getdatablockheight": result = mh.Getdatablockheight(mongodbConnStr, mongodbDatabase); break; case "getblockcount": //resultStr = "[{blockcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block") + "}]"; result = getJAbyKV("blockcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "block")); break; case "gettxcount": //resultStr = "[{txcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx") + "}]"; result = getJAbyKV("txcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "tx")); break; case "getaddrcount": //resultStr = "[{addrcount:" + mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address") + "}]"; result = getJAbyKV("addrcount", mh.GetDataCount(mongodbConnStr, mongodbDatabase, "address")); break; case "getblock": findFliter = "{index:" + req.@params[0] + "}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "block", findFliter); break; case "getblocks": sortStr = "{index:-1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "block", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; case "getrawtransaction": findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "tx", findFliter); break; case "getrawtransactions": sortStr = "{blockindex:-1,txid:-1}"; findFliter = "{}"; if ([email protected]() > 2) { string txType = req.@params[2].ToString(); if (txType != null && txType != string.Empty) { findFliter = "{type:'" + txType + "'}"; } } result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "tx", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), findFliter); break; case "getaddrs": sortStr = "{'lastuse.blockindex' : -1,'lastuse.txid' : -1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address", sortStr, int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; case "getaddresstxs": string findBson = "{'addr':'" + req.@params[0].ToString() + "'}"; sortStr = "{'blockindex' : -1}"; result = mh.GetDataPages(mongodbConnStr, mongodbDatabase, "address_tx", sortStr, int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), findBson); break; case "getasset": findFliter = "{id:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter); break; case "getallasset": findFliter = "{}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "asset", findFliter); break; case "getfulllog": findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "fulllog", findFliter); break; case "getnotify": findFliter = "{txid:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mongodbConnStr, mongodbDatabase, "notify", findFliter); break; case "getutxo": if ([email protected]() == 1) { findFliter = "{addr:'" + req.@params[0] + "',used:''}"; } ; if ([email protected]() == 2) { if ((Int64)req.@params[1] == 1) { findFliter = "{addr:'" + req.@params[0] + "'}"; } } result = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); break; case "getbalance": findFliter = "{addr:'" + req.@params[0] + "',used:''}"; JArray utxos = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); Dictionary <string, decimal> balance = new Dictionary <string, decimal>(); foreach (JObject j in utxos) { if (!balance.ContainsKey((string)j["asset"])) { balance.Add((string)j["asset"], (decimal)j["value"]); } else { balance[(string)j["asset"]] += (decimal)j["value"]; } } JArray balanceJA = new JArray(); foreach (KeyValuePair <string, decimal> kv in balance) { JObject j = new JObject(); j.Add("asset", kv.Key); j.Add("balance", kv.Value); JObject asset = (JObject)mh.GetData(mongodbConnStr, mongodbDatabase, "asset", "{id:'" + kv.Key + "'}")[0]; JArray name = (JArray)asset["name"]; j.Add("name", name); balanceJA.Add(j); } result = balanceJA; break; case "getcontractscript": findFliter = "{hash:'" + ((string)req.@params[0]).formatHexStr() + "'}"; result = mh.GetData(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", findFliter); break; case "gettransfertxhex": string addrOut = (string)req.@params[0]; findFliter = "{addr:'" + addrOut + "',used:''}"; JArray outputJA = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); result = getJAbyKV("transfertxhex", tx.getTransferTxHex(outputJA, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString()))); //result = new JArray //{ // new JObject // { // { // "transfertxhex", // tx.getTransferTxHex(outputJA,(string)req.@params[0], (string)req.@params[1], (string)req.@params[2], decimal.Parse(req.@params[3].ToString())) // } // } //}; break; case "sendtxplussign": result = getJAbyJ(tx.sendTxPlusSign(neoCliJsonRPCUrl, (string)req.@params[0], (string)req.@params[1], (string)req.@params[2])); break; case "verifytxsign": result = getJAbyKV("sign", tx.verifyTxSign((string)req.@params[0], (string)req.@params[1])); break; case "sendrawtransaction": result = getJAbyJ(tx.sendrawtransaction(neoCliJsonRPCUrl, (string)req.@params[0])); //result = new JArray //{ // new JObject // { // { // "sendrawtransactionresult", // tx.sendrawtransaction(neoCliJsonRPCUrl,(string)req.@params[0]) // } // } //}; break; case "getcontractstate": result = getJAbyJ(ct.getContractState(neoCliJsonRPCUrl, (string)req.@params[0])); break; case "invokescript": result = getJAbyJ(ct.invokeScript(neoCliJsonRPCUrl, (string)req.@params[0])); break; case "callcontractfortest": result = getJAbyJ(ct.callContractForTest(neoCliJsonRPCUrl, (string)req.@params[0], (JArray)req.@params[1])); break; case "getinvoketxhex": string addrPayFee = (string)req.@params[0]; findFliter = "{addr:'" + addrPayFee + "',used:''}"; JArray outputJAPayFee = mh.GetData(mongodbConnStr, mongodbDatabase, "utxo", findFliter); string invokeScript = (string)req.@params[1]; decimal invokeScriptFee = decimal.Parse(req.@params[2].ToString()); result = getJAbyKV("invoketxhex", tx.getInvokeTxHex(outputJAPayFee, addrPayFee, invokeScript, invokeScriptFee)); break; case "setcontractscript": JObject J = JObject.Parse((string)req.@params[0]); string hash = (string)J["hash"]; //string hash = (string)req.@params[0]; //J.Add("hash", hash); //J.Add("avm", (string)req.@params[1]); //J.Add("cs", (string)req.@params[2]); //string mapStr = (string)req.@params[3]; //string abiStr = (string)req.@params[4]; //if (mapStr != null && mapStr != string.Empty) //{ // J.Add("map", JArray.Parse((string)req.@params[3])); //} //else //{ // J.Add("map", string.Empty); //} //if (abiStr != null && abiStr != string.Empty) //{ // J.Add("abi", JObject.Parse((string)req.@params[4])); //} //else //{ // J.Add("abi", string.Empty); //} J.Add("requestIP", reqAddr); mh.InsertOneDataByCheckKey(mh.mongodbConnStr_NeonOnline, mh.mongodbDatabase_NeonOnline, "contractWarehouse", J, "hash", hash); result = getJAbyKV("isSetSuccess", true); //result = new JArray //{ // new JObject{ // { "isSetSuccess",true } // } //}; break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = null; try { switch (req.method) { // case "getContractTemplateList": result = commonService.getContractTemplateList( int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()) ); break; // case "getTxidByAddressAndContract": result = commonService.getTxidByAddressAndContract(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; // 根据交易id获取通知数据 case "getNotifyByTxid": result = commonService.getNotifyByTxid(req.@params[0].ToString()); break; // 根据交易id获取执行结果 case "getDumpInfoByTxid": result = commonService.getDumpInfoByTxid(req.@params[0].ToString()); break; // 根据地址获取交易id和提交时间 case "getTxCallContract": result = commonService.getTxCallContract(req.@params[0].ToString()); break; // teemo调用发送交易后存储交易 case "saveTeemoTx": result = commonService.saveTeemoTx(req.@params[0].ToString(), req.@params[1].ToString()); break; // 转发调用合约交易并存储结果 case "txCallContract": result = commonService.txCallContract(req.@params[0].ToString(), req.@params[1].ToString()); break; // case "sendrawtransaction": result = commonService.sendrawtransaction(req.@params[0].ToString()); break; // 根据哈希获取合约信息 case "getContractDeployInfoByHashOld": result = compileService.getContractDeployInfoByHash(req.@params[0].ToString()); break; // 根据哈希获取合约文件 case "getContractCodeByHashOld": result = compileService.getContractCodeByHash(req.@params[0].ToString(), req.@params[1].ToString()); break; // 根据地址获取合约摘要 case "getContractRemarkByAddressOld": result = compileService.getContractRemarkByAddress(req.@params[0].ToString()); break; // 3. 保存合约 case "storageContractFileOld": result = compileService.saveContract( req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString(), req.@params[8].ToString(), req.@params[9].ToString(), req.@params[10].ToString() ); break; case "saveCompileFile": result = compileService.uploadContractFile(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getCompileFile": result = compileService.downloadCompileFile(req.@params[0].ToString()); break; // 2. 编译文件 case "compileContractFileOld": result = compileService.compileFile(req.@params[0].ToString(), req.@params[1].ToString()); break; // 查询是否可以申领Gas case "hasclaimgas": result = claimService.hasClaimGas(req.@params[0].ToString()); break; // 申领Gas(即向客户地址转账,默认1gas case "claimgas": if ([email protected] < 2) { result = claimService.claimGas(req.@params[0].ToString()); } else { result = claimService.claimGas(req.@params[0].ToString(), Convert.ToDecimal(req.@params[1])); } break; // 获取余额 case "getUtxoBalance": if ([email protected] < 2) { result = commonService.getUtxoBalance(req.@params[0].ToString()); } else { result = commonService.getUtxoBalance(req.@params[0].ToString(), req.@params[1].ToString()); } break; // 获取区块时间 case "getblocktime": result = commonService.getblocktime(int.Parse(req.@params[0].ToString())); break; // 获取区块高度 case "getblockcount": result = commonService.getblockcount(); break; case "getnodetype": result = new JArray { new JObject { { "nodeType", netnode } } }; break; default: result = getResNew(req, reqAddr); break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = null; try { point(req.method); switch (req.method) { case "getassetutxobyaddress": //JsonPRCresponse ress = new JsonPRCresponse() //{ // jsonrpc = req.jsonrpc, // id = req.id, // result = new JArray() { new JObject() { { "result", "getMsg!!" } } } //}; //return ress; result = transactionServer.getAddressAssetUtxo(req.@params[0].ToString(), req.@params[1].ToString()); break; case "gettransactionlist": if ([email protected] < 2) { result = transactionServer.gettransactionlist(); } else if ([email protected] < 3) { result = transactionServer.gettransactionlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } else { result = transactionServer.gettransactionlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), req.@params[2].ToString()); } break; case "sendrawtransaction": result = transactionServer.sendrawtransaction((string)req.@params[0]); break; case "getnep5balancebyaddress": result = transactionServer.getAddressNep5Asset(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getnep5decimals": string assetid = (string)req.@params[0]; result = transactionServer.getnep5decimals(assetid); break; case "checktxboolexisted": result = transactionServer.checktxboolexisted((string)req.@params[0]); break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse() { jsonrpc = req.jsonrpc, id = req.id, result = result }; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) // change this part which is reading mongodb to read mysql, takes JsonRequest which is the api link , string address and returns a JArray object { JArray result = null; try { switch (req.method) // check the method (method to retrieve specific data) in the api link { case "getauctioninfoTx": if ([email protected] < 3) // if the params array has less than 3 objects // params length decide which methods to use; 3 is comserv , 2 is nnServe , { result = commonService.getAuctionInfoTx(req.@params[0].ToString()); } else { result = commonService.getAuctionInfoTx(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; case "getauctioninfoRank": if ([email protected] < 3) { result = commonService.getAuctionInfoRank(req.@params[0].ToString()); } else { result = commonService.getAuctionInfoRank(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; case "getauctioninfo": result = commonService.getAuctionInfo(req.@params[0].ToString()); break; case "searchbydomain": result = commonService.searchByDomain(req.@params[0].ToString()); break; // 最具价值域名 case "getaucteddomain": if ([email protected] < 2) { result = nnsService.getUsedDomainListNew(); } else { result = nnsService.getUsedDomainListNew(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } break; // 正在竞拍域名 case "getauctingdomainbymaxprice": if ([email protected] < 2) { result = nnsService.getAuctingDomainListNewByMaxPrice(); } else { result = nnsService.getAuctingDomainListNewByMaxPrice(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } break; case "getauctingdomain": if ([email protected] < 2) { result = nnsService.getAuctingDomainListNew(); } else { result = nnsService.getAuctingDomainListNew(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } break; // statistics(奖金池+已领分红+已使用域名数量+正在竞拍域名数量) case "getstatistics": result = nnsService.getStatistic(); break; // 资产名称模糊查询 case "fuzzysearchasset": result = assetService.fuzzySearchAsset(req.@params[0].ToString()); break; case "getaddresstxss": result = analyService.getAddressTxsNew(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "getrankbyasset": result = msq.GetRankByAsset(req); break; case "getrankbyassetcount": result = msq.GetRankByAssetCount(req); break; // test case "getnodetype": result = new JArray { new JObject { { "nodeType", netnode } } }; break; case "getaddr": //string addr = req.@params[0].ToString(); result = msq.GetAddress(req); break; case "getaddrcount": //string addr = req.@params[0].ToString(); result = msq.GetAddrCount(req); break; case "getaddresstxs": result = msq.GetAddressTx(req); break; case "getasset": result = msq.GetAsset(req); break; case "getallasset": result = msq.GetAllAsset(req); break; case "getnep5asset": result = msq.GetNep5Asset(req); break; case "getallnep5assets": result = msq.GetAllNep5Asset(req); break; case "getnep5transfer": result = msq.GetNep5Transfer(req); break; case "getallnep5transfer": result = msq.GetAllNep5Transfers(req); break; case "getnotify": result = msq.GetNotify(req); break; case "gettx": result = msq.GetTx(req); break; case "getutxo": result = msq.GetUTXO(req); break; case "gettxcount": result = msq.GetTxCount(req); break; case "getblockcount": result = msq.GetBlockCount(req); break; case "getblock": result = msq.GetBlock(req); break; case "getblocktime": result = msq.GetBlockTime(req); break; case "getblocks": result = msq.GetBlocks(req); break; case "getaddress": result = msq.GetAddress(req); break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = null; try { point(req.method); switch (req.method) { // case "getContractList": result = blockService.getContractList( int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; // case "getScanTxCountHist": result = blockService.getScanTxCountHist(); break; case "getScanStatistic": result = blockService.getScanStatistic(); break; // case "getInnerTxAtContractDetail": result = innerTxService.getInnerTxAtContractDetail( req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()) ); break; case "getInnerTxAtAddrDetail": result = innerTxService.getInnerTxAtAddrDetail( req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()) ); break; case "getInnerTxAtTxDetail": result = innerTxService.getInnerTxAtTxDetail( req.@params[0].ToString() ); break; case "getInnerTxAtTxList": result = innerTxService.getInnerTxAtTxList( int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()) ); break; // 获取合约信息 case "getContractNep5Tx": result = contractService.getContractNep5Tx(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; // 获取合约信息 case "getContractCallTx": result = contractService.getContractCallTx(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; // 获取合约信息 case "getContractInfo": result = contractService.getContractInfo(req.@params[0].ToString()); break; // 获取服务列表 case "getServiceList": result = daoService.getServiceList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); break; case "getUserInfo": result = daoService.getUserInfo(req.@params[0].ToString()); break; case "getHashInfoByVoteHash": result = daoService.getHashInfoByVoteHash(req.@params[0].ToString()); break; // 获取治理信息列表(治理) case "getVoteTxHistList": result = daoService.getVoteTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; // 获取治理信息(治理) case "getVoteInfo": result = daoService.getVoteInfo(req.@params[0].ToString()); break; // 获取项目交易历史列表(众筹) case "getProjTxHistList": if ([email protected] > 3) { result = daoService.getProjTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString()); break; } result = daoService.getProjTxHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; // 获取项目信息(众筹) case "getProjInfo": result = daoService.getProjInfo(req.@params[0].ToString()); break; // 存储治理信息(治理) case "storeVoteInfo": result = daoService.storeVoteInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString(), req.@params[7].ToString()); break; // 存储项目信息(众筹) case "storeProjInfo": result = daoService.storeProjInfo(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[5].ToString()); break; // ..... case "getNep5TxlistByAddress": if ([email protected] < 3) { result = blockService.getNep5TxlistByAddress(req.@params[0].ToString()); } else { result = blockService.getNep5TxlistByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; case "getNep5Txlist": if ([email protected] < 2) { result = blockService.getNep5Txlist(); } else { result = blockService.getNep5Txlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } break; // case "getMappingDomain": result = nnsDomainCrediteService.getMappingDomain(req.@params[0].ToString()); break; // case "getNNSFixedSellingList": if ([email protected] < 1) { result = nnsService.getNNSFixedSellingList(); } else if ([email protected] < 3) { result = nnsService.getNNSFixedSellingList(req.@params[0].ToString(), req.@params[1].ToString()); } else if ([email protected] < 5) { result = nnsService.getNNSFixedSellingList(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); } else { result = nnsService.getNNSFixedSellingList(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString()), req.@params[4].ToString()); } break; // 获取域名流转历史 case "getDomainTransferHist": if ([email protected] < 3) { result = domainService.getDomainTransferAndSellingInfo(req.@params[0].ToString()); } else { result = domainService.getDomainTransferAndSellingInfo(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; case "getutxolistbyaddress": if ([email protected] < 3) { result = blockService.getutxolistbyaddress(req.@params[0].ToString()); } else { result = blockService.getutxolistbyaddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; case "gettransactionlist": if ([email protected] < 2) { result = blockService.gettransactionlist(); } else if ([email protected] < 3) { result = blockService.gettransactionlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } else { result = blockService.gettransactionlist(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString()), req.@params[2].ToString()); } break; case "getutxoinfo": result = blockService.getutxoinfo(req.@params[0].ToString()); break; case "getnep5transferinfo": break; case "getdomaininfo": result = domainService.getDomainInfo(req.@params[0].ToString()); break; case "getauctioninfoTx": if ([email protected] < 3) { result = domainService.getAuctionInfoTx(req.@params[0].ToString()); } else { result = domainService.getAuctionInfoTx(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; case "getauctioninfoRank": if ([email protected] < 3) { result = domainService.getAuctionInfoRank(req.@params[0].ToString()); } else { result = domainService.getAuctionInfoRank(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; case "getauctioninfo": result = domainService.getAuctionInfo(req.@params[0].ToString()); break; case "getauctionres": result = domainService.getAuctionRes(req.@params[0].ToString()); break; case "searchbydomain": result = domainService.searchByDomain(req.@params[0].ToString()); break; // 最具价值域名 case "getaucteddomain": if ([email protected] < 2) { result = nnsService.getUsedDomainList(); } else { result = nnsService.getUsedDomainList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } break; // 正在竞拍域名 case "getauctingdomainbymaxprice": if ([email protected] < 2) { result = nnsService.getAuctingDomainListByMaxPrice(); } else { result = nnsService.getAuctingDomainListByMaxPrice(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } break; case "getauctingdomain": if ([email protected] < 2) { result = nnsService.getAuctingDomainList(); } else { result = nnsService.getAuctingDomainList(int.Parse(req.@params[0].ToString()), int.Parse(req.@params[1].ToString())); } break; // statistics(奖金池+已领分红+已使用域名数量+正在竞拍域名数量) case "getstatistics": result = nnsService.getStatistic(); break; // 资产名称模糊查询 case "fuzzysearchasset": if ([email protected] >= 3) { result = assetService.fuzzySearchAsset(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; } result = assetService.fuzzySearchAsset(req.@params[0].ToString()); break; // case "getaddresstxs": result = analyService.getAddressTxsNew(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "getrankbyasset": result = analyService.getRankByAsset(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), netnode); break; case "getrankbyassetcount": result = analyService.getRankByAssetCount(req.@params[0].ToString(), netnode); break; // test case "getnodetype": result = new JArray { new JObject { { "nodeType", netnode } } }; break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); string resultStr = string.Empty; string findFliter = string.Empty; string sortStr = string.Empty; try { point(req.method); switch (req.method) { // dex case "verifyEmail": result = dexService.verifyEmail(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); break; case "clearEmail": result = dexService.clearEmail(req.@params[0].ToString(), req.@params[1].ToString()); break; case "bindEmail": result = dexService.bindEmail(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getEmailState": result = dexService.getEmailState(req.@params[0].ToString()); break; case "hasStarDomain": result = dexService.hasStarDomain(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getStarDomainList": result = dexService.getStarDomainList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "getStarDomainCount": result = dexService.getStarDomainCount(req.@params[0].ToString()); break; case "starDexDomain": //result = dexService.starDexDomain(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); result = dexService.starDexDomain(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), req.@params[2].ToString(), req.@params[3].ToString()); break; case "searchDexDomainLikeInfo": result = dexService.searchDexDomainLikeInfo(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "searchDexDomainInfo": result = dexService.searchDexDomainInfo(req.@params[0].ToString()); break; case "getOrderRange": result = dexService.getOrderRange(decimal.Parse(req.@params[0].ToString())); break; case "getDexDomainList": result = dexService.getDexDomainList(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), req.@params[3].ToString(), int.Parse(req.@params[4].ToString()), int.Parse(req.@params[5].ToString())); break; case "getDexDomainCanUseList": result = dexService.getDexDomainCanUseList(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "getDexDomainInfo": result = dexService.getDexDomainInfo(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getDexDomainOrder": result = dexService.getDexDomainOrder(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); break; case "getDexDomainBuyOther": result = dexService.getDexDomainBuyOther(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getDexDomainBuyDetail": result = dexService.getDexDomainBuyDetail(req.@params[0].ToString()); break; case "getDexDomainSellOther": result = dexService.getDexDomainSellOther(req.@params[0].ToString()); break; case "getDexDomainSellDetail": result = dexService.getDexDomainSellDetail(req.@params[0].ToString()); break; case "getDexDomainDealHistList": result = dexService.getDexDomainDealHistList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString()); break; case "getDexDomainBuyList": result = dexService.getDexDomainBuyList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString()); break; case "getDexDomainSellList": result = dexService.getDexDomainSellList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString()); break; case "getBalanceFromDex": result = dexService.getBalanceFromDex(req.@params[0].ToString()); break; // 移动端调用: 根据地址查询域名列表(包括已绑定和未绑定) case "getDomainListByAddress": if ([email protected] < 3) { result = mobileService.getDomainListByAddress(req.@params[0].ToString()); } else if ([email protected] < 4) { result = mobileService.getDomainListByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } else { result = mobileService.getDomainListByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString()); } break; // case "getMappingDomain": result = nnsDomainCrediteService.getMappingDomain(req.@params[0].ToString()); break; /** * 获取域名状态(出售状态或竞拍状态) */ case "getdomainstate": result = newAuctionService.getdomainstate(req.@params[0].ToString()); break; /** * 获取域名出售或购买列表 */ case "getDomainSellingListByAddress": if ([email protected] < 3) { result = nnsFixedSellingService.getDomainSellingListByAddress(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString()); } else { result = nnsFixedSellingService.getDomainSellingListByAddress(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString())); } break; /** * 新增测试nnc * 1. 申请nnc接口 * 2. 查询nnc余额接口 */ case "hasClaimNNC": result = claimNNCService.hasClaimNNC(req.@params[0].ToString()); break; case "claimNNC": result = claimNNCService.claimNNC(req.@params[0].ToString()); break; case "getNNCfromSellingHash": result = nnsFixedSellingService.getNNCfromSellingHash(req.@params[0].ToString()); break; /*** * 新增转让信息和出售信息 * * 1. 首页输入框中显示"出售中" * 2. 首页填写输入框后点击查询详情,显示出售信息:domain + ttl + price * 3. 我的域名管理中新增是否为出售中的状态 * 4. 我的域名管理中新增已出售域名列表 * 5. 浏览器查询显示初始状态/出售中 * 6. 浏览器查询显示域名owner的变化:领取域名 + 转让域名 + 出售域名 * */ // 查询已出售列表 case "getHasBuyListByAddress": if ([email protected] < 4) { result = nnsFixedSellingService.getHasBuyListByAddress(req.@params[0].ToString(), req.@params[1].ToString()); } else { result = nnsFixedSellingService.getHasBuyListByAddress(req.@params[0].ToString(), req.@params[1].ToString(), int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); } break; // 查询出售信息 case "getNNSfixedSellingInfo": result = nnsFixedSellingService.getNNSfixedSellingInfo(req.@params[0].ToString()); break; // 查询域名竞拍状态+(新增是否正在出售中状态0901) case "getdomainauctioninfo": result = newAuctionService.getdomainAuctionInfo(req.@params[0].ToString()); break; // 移动端调用:获取注册器竞拍账户余额 case "getregisteraddressbalance": result = newAuctionService.getRegisterAddressBalance(req.@params[0].ToString(), req.@params[1].ToString()); break; // 移动端调用:获取竞拍状态 case "getauctionstate": result = newAuctionService.getAuctionState(req.@params[0].ToString()); break; // 移动端调用:获取域名信息 case "getdomaininfo": result = newAuctionService.getDomainInfo(req.@params[0].ToString()); break; // case "getresolvedaddress": result = domainService.getResolvedAddress(req.@params[0].ToString()); break; case "getavailableutxos": result = utxoService.getAvailableUtxos(req.@params[0].ToString(), Convert.ToDecimal(req.@params[1])); break; case "getCagsLockUtxo": if ([email protected] > 0) { result = utxoService.getCagsLockUtxo(req.@params[0].ToString()); } else { result = utxoService.getCagsLockUtxo(); } break; case "getauctioninfocount": if ([email protected] < 2) { result = newAuctionService.getAcutionInfoCount(req.@params[0].ToString()); } else { result = newAuctionService.getAcutionInfoCount(req.@params[0].ToString(), req.@params[1].ToString()); } break; case "getauctioninfobyaddress": if ([email protected] < 3) { result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString()); } else if ([email protected] < 4) { result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } else if ([email protected] < 5) { result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString()); } else if ([email protected] < 7) { result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString()); } else { result = newAuctionService.getAuctionInfoByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString()), req.@params[3].ToString(), req.@params[4].ToString(), req.@params[5].ToString(), req.@params[6].ToString()); } break; case "getauctioninfobyaucitonid": string address = req.@params[0].ToString(); // address string auctionIdsStr = req.@params[1].ToString(); // auctionIdArr result = newAuctionService.getAuctionInfoByAuctionId(JArray.Parse(auctionIdsStr), address); break; // 查询是否可以申领Gas case "hasclaimgas": result = claimService.hasClaimGas(req.@params[0].ToString()); break; // 申领Gas(即向客户地址转账,默认1gas case "claimgas": if ([email protected] < 2) { result = claimService.claimGas(req.@params[0].ToString()); } else { result = claimService.claimGas(req.@params[0].ToString(), Convert.ToDecimal(req.@params[1])); } break; // 根据txid查询交易是否成功 case "hastx": result = auctionService.hasTx(req.@params[0].ToString()); break; // 根据txid查询合约是否成功 case "hascontract": result = auctionService.hasContract(req.@params[0].ToString()); break; // 充值&转账 case "rechargeandtransfer": result = auctionService.rechargeAndTransfer(req.@params[0].ToString(), req.@params[1].ToString()); break; // 查询充值&转账交易 case "getrechargeandtransfer": result = auctionService.getRechargeAndTransfer(req.@params[0].ToString()); break; // 根据地址查询分红历史 case "getbonushistbyaddress": if ([email protected] < 3) { result = bonusService.getBonusHistByAddress(req.@params[0].ToString()); } else { result = bonusService.getBonusHistByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; //申请得到分红 case "applybonus": result = bonusService.applyBonus(req.@params[0].ToString()); break; //得到最新的分红的信息 case "getcurrentbonus": result = bonusService.getCurrentBonus(req.@params[0].ToString()); break; //得到某个地址历史分到红的记录 case "getbonusbyaddress": if ([email protected] < 3) { result = bonusService.getBonusByAddress(req.@params[0].ToString()); } else { result = bonusService.getBonusByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); } break; // 根据地址查询域名列表 case "getdomainbyaddress": if ([email protected] < 5) { result = domainService.getDomainByAddressNew(req.@params[0].ToString(), req.@params[1].ToString(), "", int.Parse(req.@params[2].ToString()), int.Parse(req.@params[3].ToString())); } else if ([email protected] < 6) { result = domainService.getDomainByAddressNew(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString())); } else { result = domainService.getDomainByAddressNew(req.@params[0].ToString(), req.@params[1].ToString(), req.@params[2].ToString(), int.Parse(req.@params[3].ToString()), int.Parse(req.@params[4].ToString()), req.@params[5].ToString()); } break; // 根据地址查询交易列表 case "gettransbyaddressOld": result = commonService.getTransByAddress(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "gettransbyaddress": result = commonService.getTransByAddress_new(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; // test case "getnodetype": result = new JArray { new JObject { { "nodeType", netnode } } }; break; } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { Console.WriteLine("errMsg:{0},errStack:{1}", e.Message, e.StackTrace); JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public async Task <object> getResAsync(JsonRPCrequest req, string reqAddr) { JArray result = new JArray(); string resultStr = string.Empty; string findFliter = string.Empty; string sortStr = string.Empty; try { switch (req.method) { #region 获取block case "getblock": result = msq.GetBlock(req); break; case "getacblock": result = msq.GetAppChainBlock(req); break; #endregion #region 获取blocks case "getblocks": result = msq.GetBlocks(req); break; case "getappchainblocks": result = msq.GetAppchainBlocks(req); break; case "getblocksdesc": result = msq.GetBlocksDESC(req); break; case "getappchainblocksdesc": result = msq.GetAppchainBlocksDESC(req); break; case "getblocksdesccache": result = msq.GetBlocksDESCCache(req); break; case "getappchainblocksdesccache": result = msq.GetAppchainBlocksDESCCache(req); break; #endregion #region 获取block from hash case "getblockfromhash": result = msq.GetBlockFromHash(req); break; case "getappchainblockfromhash": result = msq.GetAppChainBlockFromHash(req); break; #endregion #region 获取blockcount case "getblockcount": var blockcount = Helper.MakeRpcUrl(ZoroHelper.ZoroUrl, "getblockcount", rootChain); var s = await Helper.HttpGet(blockcount); var a = new JArray(); a.Add(new JObject { { "blockcount", JObject.Parse(s)["result"].ToString() } }); result = a; break; case "getappchainblockcount": var appchainblockcount = Helper.MakeRpcUrl(ZoroHelper.ZoroUrl, "getblockcount", req.@params[0].ToString()); var apps = await Helper.HttpGet(appchainblockcount); var appa = new JArray(); appa.Add(new JObject { { "blockcount", JObject.Parse(apps)["result"].ToString() } }); result = appa; break; #endregion #region 获取爬虫爬到的blockcount case "getdatablockheight": result = msq.GetDataBlockHeight(req); break; case "getappchaindatablockheight": result = msq.GetAppchainBlockCount(req); break; #endregion #region 获取addrcount case "getaddrcount": result = msq.GetAddrCount(req); break; case "getappchainaddrcount": result = msq.GetAppchainAddrCount(req); break; #endregion #region 获取txcount case "gettxcount": result = msq.GetTxCount(req); break; case "getappchaintxcount": result = msq.GetAppchainTxCount(req); break; #endregion #region 获取rawtransaction case "getrawtransaction": result = msq.GetRawTransaction(req); break; case "getacrawtransaction": result = msq.GetAppChainRawTransaction(req); break; #endregion #region 获取transaction case "gettransaction": result = msq.GetTransaction(req); break; case "getactransaction": result = msq.GetAppChainTransaction(req); break; #endregion #region 获取transaction_ex case "gettransactions_ex": result = msq.GetTransactions_EX(req); break; case "getactransactions_ex": result = msq.GetAppChainTransactions_EX(req); break; #endregion #region 获取rawtransactions case "getrawtransactions": result = msq.GetRawTransactions(req); break; case "getappchainrawtransactions": result = msq.GetAppchainRawTransactions(req); break; case "getrawtransactionsdesc": result = msq.GetRawTransactionsDESC(req); break; case "getappchainrawtransactionsdesc": result = msq.GetAppchainRawTransactionsDESC(req); break; case "getrawtransactionsdesccache": result = msq.GetRawTransactionsDESCCache(req); break; case "getappchainrawtransactionsdesccache": result = msq.GetAppchainRawTransactionsDESCCache(req); break; #endregion #region 获取allnep5asset case "getallnep5asset": result = msq.GetAllNep5Asset(req); break; case "getappchainallnep5asset": result = msq.GetAllNep5AssetByChainHash(req); break; #endregion #region 获取hashlist,appchain case "gethashlist": result = msq.GetHashlist(req); break; case "getallappchains": result = msq.GetAllAppchains(req); break; case "getappchain": result = msq.GetAppchain(req); break; #endregion #region 获取nep5asset case "getnep5asset": result = msq.GetNep5Asset(req); break; case "getappchainnep5asset": result = msq.GetAppChainNep5Asset(req); break; case "getaddressasset": result = msq.GetAddressAsset(req); break; case "getaddressallasset": result = await msq.GetAddressAllAssetAsync(req); break; #endregion #region 获取address case "getaddress": result = msq.GetAddress(req); break; case "getappchainaddress": result = msq.GetAppChainAddress(req); break; #endregion #region 获取addr case "getaddr": result = msq.GetAddr(req); break; case "getappchainaddr": result = msq.GetAppChainAddr(req); break; #endregion #region 获取addrs case "getaddrs": result = msq.GetAddrs(req); break; case "getappchainaddrs": result = msq.GetAppChainAddrs(req); break; #endregion #region 获取addresstxs case "getaddresstxs": result = msq.GetAddressTxs(req); break; case "getappchainaddresstxs": result = msq.GetAppChainAddressTxs(req); break; case "getaddressnep5txs": result = msq.GetAddressNep5Txs(req); break; #endregion #region 获取balance case "getbalance": result = await msq.GetBalanceByAssetAsync(req); break; case "getbalancebyasset": result = await msq.GetAssetBalanceAsync(req); break; case "getappchainbalance": result = await msq.GetAppChainBalanceAsync(req); break; #endregion #region 获取utxo case "getutxo": result = msq.GetUTXO(req); break; case "getappchainutxo": result = msq.GetAppChainUTXO(req); break; #endregion #region 获取rankasset case "getrankbyasset": result = msq.GetRankByAsset(req); break; case "getappchainrankbyasset": result = msq.GetAppChainRankByAsset(req); break; #endregion #region 获取rankbyassetcount case "getrankbyassetcount": result = msq.GetRankByAssetCount(req); break; case "getappchainrankbyassetcount": result = msq.GetAppChainRankByAssetCount(req); break; #endregion #region 获取nep5transferbytxid case "getnep5transferbytxid": result = msq.GetNep5TransferByTxid(req); break; case "getappchainnep5transferbytxid": result = msq.GetAppChainNep5TransferByTxid(req); break; #endregion #region 获取nep5transferbytxidex case "getnep5transferbytxidex": result = msq.GetNep5TransferByTxidEX(req); break; case "getappchainnep5transferbytxidex": result = msq.GetAppChainNep5TransferByTxidEX(req); break; #endregion #region 获取nep5transferbytxids case "getnep5transferbytxids": result = msq.GetNep5TransferByTxids(req); break; case "gettransferbytxids": result = msq.GetTransferByTxids(req); break; #endregion #region 获取nep5transfer case "getnep5transfer": result = msq.GetNep5Transfer(req); break; case "getappchainnep5transfer": result = msq.GetAppChainNep5Transfer(req); break; case "getnep5transferbyasset": result = msq.GetNep5TransferByAsset(req); break; case "getnep5transferbyassetandaddress": result = msq.GetNep5TransferByAssetAndAddress(req); break; case "getsendallamountbyaddress": result = msq.GetSendAllAmountByAddress(req); break; #endregion #region 获取 nft 相关信息 case "getnftfromaddrandhash": result = msq.GetNFTFromAddrAndHash(req); break; case "getnfthashfromaddr": result = msq.GetNFTHashFromAddr(req); break; case "getnftfromhash": result = msq.GetNFTFromHash(req); break; case "gettokenproperties": result = msq.getProperties(req); break; #endregion #region 和链交互 case "sendrawtransaction": var tx = ""; if ([email protected] > 1) { if (req.@params[0].ToString() == "") { chainhash = rootChain; } else { chainhash = req.@params[0].ToString(); } tx = await ZoroHelper.SendRawTransaction(req.@params[1].ToString(), chainhash); } else { //byte[] postArray = APIHelper.HexString2Bytes(req.@params[0].ToString()); tx = await ZoroHelper.SendRawTransaction(req.@params[0].ToString(), rootChain); } if (JObject.Parse(tx)["result"].ToString() == "True") { result = new JArray() { new JObject { { "sendrawtransactionresult", JObject.Parse(tx)["result"] } } } } ; else { result = new JArray() { JObject.Parse(tx)["result"] } }; break; case "invokescript": var invokescript = ""; if ([email protected] > 1) { byte[] postArray = APIHelper.HexString2Bytes(req.@params[1].ToString()); invokescript = await ZoroHelper.InvokeScript(postArray, req.@params[0].ToString()); } else { byte[] postArray = APIHelper.HexString2Bytes(req.@params[0].ToString()); invokescript = await ZoroHelper.InvokeScript(postArray, rootChain); } result = new JArray() { JObject.Parse(invokescript)["result"] }; break; case "estimategas": decimal estimategas = 0; if ([email protected] > 1) { //byte[] postArray = APIHelper.HexString2Bytes(req.@params[1].ToString()); estimategas = await ZoroHelper.EstimateGas(req.@params[1].ToString(), req.@params[0].ToString()); } else { //byte[] postArray = APIHelper.HexString2Bytes(req.@params[0].ToString()); estimategas = await ZoroHelper.EstimateGas(req.@params[0].ToString(), rootChain); } result = new JArray() { new JObject { { "gas", estimategas } } }; break; case "getcontractstate": var url = ""; if ([email protected] > 1) { byte[] postArray = null; Zoro.IO.Json.JArray jArray = new Zoro.IO.Json.JArray(); jArray.Add(req.@params[0].ToString()); jArray.Add(req.@params[1].ToString()); url = Helper.MakeRpcUrlPost(ZoroHelper.ZoroUrl, "getcontractstate", out postArray, jArray); url = await Helper.HttpPost(url, postArray); } else { byte[] postArray = null; Zoro.IO.Json.JArray jArray = new Zoro.IO.Json.JArray(); jArray.Add(rootChain); jArray.Add(req.@params[0].ToString()); url = Helper.MakeRpcUrlPost(ZoroHelper.ZoroUrl, "getcontractstate", out postArray, jArray); url = await Helper.HttpPost(url, postArray); } result = new JArray() { JObject.Parse(url)["result"] }; break; #endregion #region 其他 case "getpagemessage": result = msq.getPageMessage(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getnep5count": result = msq.GetNep5Count(req); break; case "getnep5allnep5assetofaddress": result = msq.GetAllNep5AssetOfAddress(req); break; case "getcontractmessage": string contractChainHash = ""; string contract = ""; if ([email protected] > 1) { if (req.@params[0].ToString() == "") { contractChainHash = rootChain; } else { contractChainHash = req.@params[0].ToString(); } contract = req.@params[1].ToString(); if (!contract.StartsWith("0x")) { contract = "0x" + contract; } result = msq.GetContractMessage(contractChainHash, contract); } else { contract = req.@params[0].ToString(); if (!contract.StartsWith("0x")) { contract = "0x" + contract; } result = msq.GetContractMessage(rootChain, contract); } break; case "getallnep5assetofaddress": string NEP5addr = (string)req.@params[0]; bool isNeedBalance = false; string chainHash = ""; if ([email protected]() > 1) { isNeedBalance = ((Int64)req.@params[1] == 1) ? true : false; } if ([email protected]() > 2) { chainHash = req.@params[2].ToString(); } var assetAdds = msq.GetNep5AssetByAddress(chainHash, NEP5addr); List <NEP5.AssetBalanceOfAddr> addrAssetBalances = new List <NEP5.AssetBalanceOfAddr>(); if (isNeedBalance) { //UInt160 addr = UInt160.Parse(ThinNeo.Helper.GetPublicKeyHashFromAddress(NEP5addr).ToString()); foreach (var assetAdd in assetAdds) { if (assetAdd["type"].ToString() == "NativeNep5") { var nep5 = await APIHelper.getNativeBalanceOfAsync(chainHash, assetAdd["assetid"].ToString(), NEP5addr); if (nep5.balance != "0") { addrAssetBalances.Add(nep5); } } else { var nep5 = await APIHelper.getBalanceOfAsync(chainHash, assetAdd["assetid"].ToString(), NEP5addr); if (nep5.balance != "0") { addrAssetBalances.Add(nep5); } } } } if (!isNeedBalance) { result = JArray.FromObject(assetAdds); } else { result = JArray.FromObject(addrAssetBalances); } break; #endregion } if (result != null && result.Count > 0 && result[0]["errorCode"] != null) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, (int)result[0]["errorCode"], (string)result[0]["errorMsg"], (string)result[0]["errorData"]); return(resE); } if (result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }
public object getRes(JsonRPCrequest req, string reqAddr) { JArray result = null; try { switch (req.method) { // case "getUinTotal": if ([email protected] < 2) { result = exchangeService.getUinTotal(req.@params[0].ToString()); } else { result = exchangeService.getUinTotal(req.@params[0].ToString(), req.@params[1].ToString()); } break; case "getLiquidityRate": result = exchangeService.getLiquidityRate(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getLiquidityHash": result = exchangeService.getLiquidityHash(req.@params[0].ToString(), req.@params[1].ToString()); break; case "getLiquidityInfo": result = exchangeService.getLiquidityInfo(req.@params[0].ToString(), req.@params[1].ToString()); break; // 获取GAS/USD价格 case "getExchangePrice": result = exchangeService.getExchangePrice(); break; // 获取USD/CNY汇率 case "getExchangeRate": result = exchangeService.getExchangeRate(); break; // 获取资产列表 case "getAssetList": result = exchangeService.getAssetList(req.@params[0].ToString(), int.Parse(req.@params[1].ToString()), int.Parse(req.@params[2].ToString())); break; case "getnodetype": result = new JArray { new JObject { { "nodeType", netnode } } }; break; } // if (result == null || result.Count == 0) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -1, "No Data", "Data does not exist"); return(resE); } } catch (Exception e) { JsonPRCresponse_Error resE = new JsonPRCresponse_Error(req.id, -100, "Parameter Error", e.Message); return(resE); } JsonPRCresponse res = new JsonPRCresponse(); res.jsonrpc = req.jsonrpc; res.id = req.id; res.result = result; return(res); }