DefaultRpcMethodResults.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using EdjCase.JsonRpc.Core;
  2. using EdjCase.JsonRpc.Router.Abstractions;
  3. using Newtonsoft.Json.Linq;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Threading.Tasks;
  8. namespace EdjCase.JsonRpc.Router.Defaults
  9. {
  10. /// <summary>
  11. /// Error result for rpc responses
  12. /// </summary>
  13. public class RpcMethodErrorResult : IRpcMethodResult
  14. {
  15. /// <summary>
  16. /// Error message
  17. /// </summary>
  18. public string Message { get; }
  19. /// <summary>
  20. /// JSON-RPC error code
  21. /// </summary>
  22. public int ErrorCode { get; }
  23. /// <summary>
  24. /// Data for error response
  25. /// </summary>
  26. public object Data { get; }
  27. /// <param name="errorCode">JSON-RPC error code</param>
  28. /// <param name="message">(Optional)Error message</param>
  29. /// <param name="data">(Optional)Data for error response</param>
  30. public RpcMethodErrorResult(int errorCode, string message = null, object data = null)
  31. {
  32. this.ErrorCode = errorCode;
  33. this.Message = message;
  34. this.Data = data;
  35. }
  36. /// <summary>
  37. /// Turns result data into a rpc response
  38. /// </summary>
  39. /// <param name="id">Rpc request id</param>
  40. /// <param name="serializer">Json serializer function to use for objects for the response</param>
  41. /// <returns>Rpc response for request</returns>
  42. public RpcResponse ToRpcResponse(RpcId id)
  43. {
  44. RpcError error = new RpcError(this.ErrorCode, this.Message, this.Data);
  45. return new RpcResponse(id, error);
  46. }
  47. }
  48. /// <summary>
  49. /// Success result for rpc responses
  50. /// </summary>
  51. public class RpcMethodSuccessResult : IRpcMethodResult
  52. {
  53. /// <summary>
  54. /// Object to return in rpc response
  55. /// </summary>
  56. public object ReturnObject { get; }
  57. /// <summary>
  58. ///
  59. /// </summary>
  60. /// <param name="returnObject">Object to return in rpc response</param>
  61. public RpcMethodSuccessResult(object returnObject = null)
  62. {
  63. this.ReturnObject = returnObject;
  64. }
  65. /// <summary>
  66. /// Turns result data into a rpc response
  67. /// </summary>
  68. /// <param name="id">Rpc request id</param>
  69. /// <param name="serializer">Json serializer function to use for objects for the response</param>
  70. /// <returns>Rpc response for request</returns>
  71. public RpcResponse ToRpcResponse(RpcId id)
  72. {
  73. return new RpcResponse(id, this.ReturnObject, this.ReturnObject?.GetType());
  74. }
  75. }
  76. }