using EdjCase.JsonRpc.Core; using EdjCase.JsonRpc.Router.Abstractions; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace EdjCase.JsonRpc.Router.Defaults { /// /// Error result for rpc responses /// public class RpcMethodErrorResult : IRpcMethodResult { /// /// Error message /// public string Message { get; } /// /// JSON-RPC error code /// public int ErrorCode { get; } /// /// Data for error response /// public object Data { get; } /// JSON-RPC error code /// (Optional)Error message /// (Optional)Data for error response public RpcMethodErrorResult(int errorCode, string message = null, object data = null) { this.ErrorCode = errorCode; this.Message = message; this.Data = data; } /// /// Turns result data into a rpc response /// /// Rpc request id /// Json serializer function to use for objects for the response /// Rpc response for request public RpcResponse ToRpcResponse(RpcId id) { RpcError error = new RpcError(this.ErrorCode, this.Message, this.Data); return new RpcResponse(id, error); } } /// /// Success result for rpc responses /// public class RpcMethodSuccessResult : IRpcMethodResult { /// /// Object to return in rpc response /// public object ReturnObject { get; } /// /// /// /// Object to return in rpc response public RpcMethodSuccessResult(object returnObject = null) { this.ReturnObject = returnObject; } /// /// Turns result data into a rpc response /// /// Rpc request id /// Json serializer function to use for objects for the response /// Rpc response for request public RpcResponse ToRpcResponse(RpcId id) { return new RpcResponse(id, this.ReturnObject, this.ReturnObject?.GetType()); } } }