Skip to content

Commit 4bb1773

Browse files
committed
Add error information to invoice's JSON format
1 parent 9133829 commit 4bb1773

File tree

4 files changed

+26
-5
lines changed

4 files changed

+26
-5
lines changed

types/src/invoice/parcel_invoice.rs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// along with this program. If not, see <https://www.gnu.org/licenses/>.
1616

1717
use rlp::{Decodable, DecoderError, Encodable, RlpStream, UntrustedRlp};
18-
use serde::ser::SerializeSeq;
18+
use serde::ser::{SerializeSeq, SerializeStruct};
1919
use serde::{Serialize, Serializer};
2020

2121
use super::super::parcel::Error;
@@ -38,8 +38,17 @@ impl Serialize for ParcelInvoice {
3838
where
3939
S: Serializer, {
4040
match self {
41-
ParcelInvoice::SingleSuccess => serializer.serialize_str("Success"),
42-
ParcelInvoice::SingleFail(ref _err) => serializer.serialize_str("Failed"),
41+
ParcelInvoice::SingleSuccess => {
42+
let mut s = serializer.serialize_struct("ParcelInvoice", 1)?;
43+
s.serialize_field("success", &true)?;
44+
s.end()
45+
}
46+
ParcelInvoice::SingleFail(ref err) => {
47+
let mut s = serializer.serialize_struct("ParcelInvoice", 2)?;
48+
s.serialize_field("success", &false)?;
49+
s.serialize_field("error", err)?;
50+
s.end()
51+
}
4352
ParcelInvoice::Multiple(transaction_invoices) => {
4453
let mut s = serializer.serialize_seq(Some(transaction_invoices.len()))?;
4554
for transaction_invoice in transaction_invoices {

types/src/invoice/transaction_invoice.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
// along with this program. If not, see <https://www.gnu.org/licenses/>.
1616

1717
use rlp::{Decodable, DecoderError, Encodable, RlpStream, UntrustedRlp};
18+
use serde::ser::SerializeStruct;
1819
use serde::{Serialize, Serializer};
1920

2021
use super::super::transaction::Error;
@@ -35,8 +36,17 @@ impl Serialize for TransactionInvoice {
3536
where
3637
S: Serializer, {
3738
match self {
38-
TransactionInvoice::Success => serializer.serialize_str("Success"),
39-
TransactionInvoice::Fail(_err) => serializer.serialize_str("Failed"),
39+
TransactionInvoice::Success => {
40+
let mut s = serializer.serialize_struct("TransactionInvoice", 1)?;
41+
s.serialize_field("success", &true)?;
42+
s.end()
43+
}
44+
TransactionInvoice::Fail(err) => {
45+
let mut s = serializer.serialize_struct("TransactionInvoice", 2)?;
46+
s.serialize_field("success", &false)?;
47+
s.serialize_field("error", err)?;
48+
s.end()
49+
}
4050
}
4151
}
4252
}

types/src/parcel/error.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ use super::super::util::unexpected::Mismatch;
2525
use super::super::ShardId;
2626

2727
#[derive(Debug, PartialEq, Clone, Serialize)]
28+
#[serde(tag = "type", content = "content")]
2829
/// Errors concerning parcel processing.
2930
pub enum Error {
3031
/// Parcel is already imported to the queue

types/src/transaction/error.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ use super::super::util::unexpected::Mismatch;
2424
use super::super::{ShardId, WorldId};
2525

2626
#[derive(Debug, PartialEq, Clone, Eq, Serialize)]
27+
#[serde(tag = "type", content = "content")]
2728
pub enum Error {
2829
InvalidAssetAmount {
2930
address: H256,

0 commit comments

Comments
 (0)