@@ -112,40 +112,46 @@ impl IsPlutusData for Credential {
112
112
113
113
#[ cfg( feature = "lbf" ) ]
114
114
impl Json for Credential {
115
- fn to_json ( & self ) -> Result < serde_json:: Value , Error > {
115
+ fn to_json ( & self ) -> serde_json:: Value {
116
116
match self {
117
- Credential :: PubKey ( pkh) => Ok ( json:: sum_constructor (
118
- "PubKeyCredential" ,
119
- vec ! [ pkh. to_json( ) ?] ,
120
- ) ) ,
121
- Credential :: Script ( val_hash) => Ok ( json:: sum_constructor (
122
- "ScriptCredential" ,
123
- vec ! [ val_hash. to_json( ) ?] ,
124
- ) ) ,
117
+ Credential :: PubKey ( pkh) => {
118
+ json:: json_constructor ( "PubKeyCredential" , & vec ! [ pkh. to_json( ) ] )
119
+ }
120
+ Credential :: Script ( val_hash) => {
121
+ json:: json_constructor ( "ScriptCredential" , & vec ! [ val_hash. to_json( ) ] )
122
+ }
125
123
}
126
124
}
127
125
128
- fn from_json ( value : serde_json:: Value ) -> Result < Self , Error > {
129
- json:: sum_parser ( & value) . and_then ( |obj| match obj {
130
- ( "PubKeyCredential" , ctor_fields) => match & ctor_fields[ ..] {
131
- [ pkh] => Ok ( Credential :: PubKey ( Json :: from_json ( pkh. clone ( ) ) ?) ) ,
132
- _ => Err ( Error :: UnexpectedArrayLength {
133
- wanted : 1 ,
134
- got : ctor_fields. len ( ) ,
135
- } ) ,
136
- } ,
137
- ( "ScriptCredential" , ctor_fields) => match & ctor_fields[ ..] {
138
- [ val_hash] => Ok ( Credential :: Script ( Json :: from_json ( val_hash. clone ( ) ) ?) ) ,
139
- _ => Err ( Error :: UnexpectedArrayLength {
140
- wanted : 1 ,
141
- got : ctor_fields. len ( ) ,
142
- } ) ,
143
- } ,
144
- _ => Err ( Error :: UnexpectedJsonInvariant {
145
- wanted : "constructor names (Nothing, Just)" . to_owned ( ) ,
146
- got : "unknown constructor name" . to_owned ( ) ,
147
- } ) ,
148
- } )
126
+ fn from_json ( value : & serde_json:: Value ) -> Result < Self , Error > {
127
+ json:: case_json_constructor (
128
+ "Plutus.V1.Credential" ,
129
+ vec ! [
130
+ (
131
+ "PubKeyCredential" ,
132
+ Box :: new( |ctor_fields| match & ctor_fields[ ..] {
133
+ [ pkh] => Ok ( Credential :: PubKey ( Json :: from_json( pkh) ?) ) ,
134
+ _ => Err ( Error :: UnexpectedArrayLength {
135
+ wanted: 1 ,
136
+ got: ctor_fields. len( ) ,
137
+ parser: "Plutus.V1.Credential" . to_owned( ) ,
138
+ } ) ,
139
+ } ) ,
140
+ ) ,
141
+ (
142
+ "ScriptCredential" ,
143
+ Box :: new( |ctor_fields| match & ctor_fields[ ..] {
144
+ [ val_hash] => Ok ( Credential :: Script ( Json :: from_json( val_hash) ?) ) ,
145
+ _ => Err ( Error :: UnexpectedArrayLength {
146
+ wanted: 1 ,
147
+ got: ctor_fields. len( ) ,
148
+ parser: "Plutus.V1.Credential" . to_owned( ) ,
149
+ } ) ,
150
+ } ) ,
151
+ ) ,
152
+ ] ,
153
+ value,
154
+ )
149
155
}
150
156
}
151
157
@@ -211,41 +217,46 @@ impl IsPlutusData for StakingCredential {
211
217
212
218
#[ cfg( feature = "lbf" ) ]
213
219
impl Json for StakingCredential {
214
- fn to_json ( & self ) -> Result < serde_json:: Value , Error > {
220
+ fn to_json ( & self ) -> serde_json:: Value {
215
221
match self {
216
222
StakingCredential :: Hash ( pkh) => {
217
- Ok ( json:: sum_constructor ( "StakingHash" , vec ! [ pkh. to_json( ) ?] ) )
223
+ json:: json_constructor ( "StakingHash" , & vec ! [ pkh. to_json( ) ] )
224
+ }
225
+ StakingCredential :: Pointer ( val_hash) => {
226
+ json:: json_constructor ( "StakingPtr" , & vec ! [ val_hash. to_json( ) ] )
218
227
}
219
- StakingCredential :: Pointer ( val_hash) => Ok ( json:: sum_constructor (
220
- "StakingPtr" ,
221
- vec ! [ val_hash. to_json( ) ?] ,
222
- ) ) ,
223
228
}
224
229
}
225
230
226
- fn from_json ( value : serde_json:: Value ) -> Result < Self , Error > {
227
- json:: sum_parser ( & value) . and_then ( |obj| match obj {
228
- ( "StakingHash" , ctor_fields) => match & ctor_fields[ ..] {
229
- [ pkh] => Ok ( StakingCredential :: Hash ( Json :: from_json ( pkh. clone ( ) ) ?) ) ,
230
- _ => Err ( Error :: UnexpectedArrayLength {
231
- wanted : 1 ,
232
- got : ctor_fields. len ( ) ,
233
- } ) ,
234
- } ,
235
- ( "StakingPtr" , ctor_fields) => match & ctor_fields[ ..] {
236
- [ val_hash] => Ok ( StakingCredential :: Pointer ( Json :: from_json (
237
- val_hash. clone ( ) ,
238
- ) ?) ) ,
239
- _ => Err ( Error :: UnexpectedArrayLength {
240
- wanted : 1 ,
241
- got : ctor_fields. len ( ) ,
242
- } ) ,
243
- } ,
244
- _ => Err ( Error :: UnexpectedJsonInvariant {
245
- wanted : "constructor names (Nothing, Just)" . to_owned ( ) ,
246
- got : "unknown constructor name" . to_owned ( ) ,
247
- } ) ,
248
- } )
231
+ fn from_json ( value : & serde_json:: Value ) -> Result < Self , Error > {
232
+ json:: case_json_constructor (
233
+ "Plutus.V1.StakingCredential" ,
234
+ vec ! [
235
+ (
236
+ "StakingHash" ,
237
+ Box :: new( |ctor_fields| match & ctor_fields[ ..] {
238
+ [ pkh] => Ok ( StakingCredential :: Hash ( Json :: from_json( pkh) ?) ) ,
239
+ _ => Err ( Error :: UnexpectedArrayLength {
240
+ wanted: 1 ,
241
+ got: ctor_fields. len( ) ,
242
+ parser: "Plutus.V1.StakingCredential" . to_owned( ) ,
243
+ } ) ,
244
+ } ) ,
245
+ ) ,
246
+ (
247
+ "StakingPtr" ,
248
+ Box :: new( |ctor_fields| match & ctor_fields[ ..] {
249
+ [ val_hash] => Ok ( StakingCredential :: Pointer ( Json :: from_json( & val_hash) ?) ) ,
250
+ _ => Err ( Error :: UnexpectedArrayLength {
251
+ wanted: 1 ,
252
+ got: ctor_fields. len( ) ,
253
+ parser: "Plutus.V1.StakingCredential" . to_owned( ) ,
254
+ } ) ,
255
+ } ) ,
256
+ ) ,
257
+ ] ,
258
+ value,
259
+ )
249
260
}
250
261
}
251
262
0 commit comments