error.rs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. use std::error::Error as StdError;
  2. use std::fmt;
  3. use std::string::FromUtf8Error;
  4. #[derive(Debug)]
  5. pub enum Error {
  6. /// Min req error
  7. MinReqError(minreq::Error),
  8. /// Parse Url Error
  9. UrlParseError(url::ParseError),
  10. /// Unsupported Token
  11. UnsupportedToken,
  12. /// Utf8 parse error
  13. Utf8ParseError(FromUtf8Error),
  14. /// Serde Json error
  15. SerdeJsonError(serde_json::Error),
  16. /// Base64 error
  17. Base64Error(base64::DecodeError),
  18. /// Insufficaint Funds
  19. InsufficantFunds,
  20. CustomError(String),
  21. /// From hex error
  22. HexError(hex::FromHexError),
  23. /// From elliptic curve
  24. EllipticError(k256::elliptic_curve::Error),
  25. AmountKey,
  26. Amount,
  27. TokenSpent,
  28. TokenNotVerifed,
  29. OutputOrdering,
  30. InvoiceAmountUndefined,
  31. CrabMintError(crate::client::Error),
  32. }
  33. impl fmt::Display for Error {
  34. fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
  35. match self {
  36. Error::MinReqError(err) => write!(f, "{}", err),
  37. Error::UrlParseError(err) => write!(f, "{}", err),
  38. Error::UnsupportedToken => write!(f, "Unsuppported Token"),
  39. Error::Utf8ParseError(err) => write!(f, "{}", err),
  40. Error::SerdeJsonError(err) => write!(f, "{}", err),
  41. Error::Base64Error(err) => write!(f, "{}", err),
  42. Error::InsufficantFunds => write!(f, "Insufficant Funds"),
  43. Error::CustomError(err) => write!(f, "{}", err),
  44. Error::HexError(err) => write!(f, "{}", err),
  45. Error::EllipticError(err) => write!(f, "{}", err),
  46. Error::AmountKey => write!(f, "No Key for amount"),
  47. Error::Amount => write!(f, "Amount miss match"),
  48. Error::TokenSpent => write!(f, "Token Spent"),
  49. Error::TokenNotVerifed => write!(f, "Token Not Verified"),
  50. Error::CrabMintError(err) => write!(f, "{}", err),
  51. Error::OutputOrdering => write!(f, "Output ordering"),
  52. Error::InvoiceAmountUndefined => write!(f, "Invoice without amount"),
  53. }
  54. }
  55. }
  56. impl StdError for Error {}
  57. impl From<minreq::Error> for Error {
  58. fn from(err: minreq::Error) -> Error {
  59. Error::MinReqError(err)
  60. }
  61. }
  62. impl From<url::ParseError> for Error {
  63. fn from(err: url::ParseError) -> Error {
  64. Error::UrlParseError(err)
  65. }
  66. }
  67. impl From<FromUtf8Error> for Error {
  68. fn from(err: FromUtf8Error) -> Error {
  69. Error::Utf8ParseError(err)
  70. }
  71. }
  72. impl From<serde_json::Error> for Error {
  73. fn from(err: serde_json::Error) -> Error {
  74. Error::SerdeJsonError(err)
  75. }
  76. }
  77. impl From<base64::DecodeError> for Error {
  78. fn from(err: base64::DecodeError) -> Error {
  79. Error::Base64Error(err)
  80. }
  81. }
  82. impl From<hex::FromHexError> for Error {
  83. fn from(err: hex::FromHexError) -> Error {
  84. Error::HexError(err)
  85. }
  86. }
  87. impl From<k256::elliptic_curve::Error> for Error {
  88. fn from(err: k256::elliptic_curve::Error) -> Error {
  89. Error::EllipticError(err)
  90. }
  91. }
  92. impl From<crate::client::Error> for Error {
  93. fn from(err: crate::client::Error) -> Error {
  94. Error::CrabMintError(err)
  95. }
  96. }