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());
}
}
}