| 
									
										
										
										
											2015-07-07 02:54:22 +02:00
										 |  |  | // Copyright 2015 The go-ethereum Authors | 
					
						
							| 
									
										
										
										
											2015-07-22 18:48:40 +02:00
										 |  |  | // This file is part of the go-ethereum library. | 
					
						
							| 
									
										
										
										
											2015-07-07 02:54:22 +02:00
										 |  |  | // | 
					
						
							| 
									
										
										
										
											2015-07-23 18:35:11 +02:00
										 |  |  | // The go-ethereum library is free software: you can redistribute it and/or modify | 
					
						
							| 
									
										
										
										
											2015-07-07 02:54:22 +02:00
										 |  |  | // it under the terms of the GNU Lesser General Public License as published by | 
					
						
							|  |  |  | // the Free Software Foundation, either version 3 of the License, or | 
					
						
							|  |  |  | // (at your option) any later version. | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2015-07-22 18:48:40 +02:00
										 |  |  | // The go-ethereum library is distributed in the hope that it will be useful, | 
					
						
							| 
									
										
										
										
											2015-07-07 02:54:22 +02:00
										 |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							| 
									
										
										
										
											2015-07-22 18:48:40 +02:00
										 |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
					
						
							| 
									
										
										
										
											2015-07-07 02:54:22 +02:00
										 |  |  | // GNU Lesser General Public License for more details. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // You should have received a copy of the GNU Lesser General Public License | 
					
						
							| 
									
										
										
										
											2015-07-22 18:48:40 +02:00
										 |  |  | // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2015-07-07 02:54:22 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-09 10:59:44 +02:00
										 |  |  | package api | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							|  |  |  | 	"encoding/json" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	"github.com/ethereum/go-ethereum/rpc/shared" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type NewAccountArgs struct { | 
					
						
							|  |  |  | 	Passphrase string | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (args *NewAccountArgs) UnmarshalJSON(b []byte) (err error) { | 
					
						
							|  |  |  | 	var obj []interface{} | 
					
						
							|  |  |  | 	if err := json.Unmarshal(b, &obj); err != nil { | 
					
						
							|  |  |  | 		return shared.NewDecodeParamError(err.Error()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-10 11:29:52 +02:00
										 |  |  | 	if len(obj) < 1 { | 
					
						
							|  |  |  | 		return shared.NewInsufficientParamsError(len(obj), 1) | 
					
						
							| 
									
										
										
										
											2015-06-09 10:59:44 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-06-10 11:29:52 +02:00
										 |  |  | 	if passhrase, ok := obj[0].(string); ok { | 
					
						
							|  |  |  | 		args.Passphrase = passhrase | 
					
						
							|  |  |  | 		return nil | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return shared.NewInvalidTypeError("passhrase", "not a string") | 
					
						
							| 
									
										
										
										
											2015-06-09 10:59:44 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | type UnlockAccountArgs struct { | 
					
						
							|  |  |  | 	Address    string | 
					
						
							| 
									
										
										
										
											2015-08-28 12:49:41 +02:00
										 |  |  | 	Passphrase *string | 
					
						
							| 
									
										
										
										
											2015-06-09 10:59:44 +02:00
										 |  |  | 	Duration   int | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func (args *UnlockAccountArgs) UnmarshalJSON(b []byte) (err error) { | 
					
						
							|  |  |  | 	var obj []interface{} | 
					
						
							|  |  |  | 	if err := json.Unmarshal(b, &obj); err != nil { | 
					
						
							|  |  |  | 		return shared.NewDecodeParamError(err.Error()) | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-07 09:56:49 +02:00
										 |  |  | 	args.Duration = 0 | 
					
						
							| 
									
										
										
										
											2015-06-09 10:59:44 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-07 09:56:49 +02:00
										 |  |  | 	if len(obj) < 1 { | 
					
						
							|  |  |  | 		return shared.NewInsufficientParamsError(len(obj), 1) | 
					
						
							| 
									
										
										
										
											2015-06-10 11:29:52 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if addrstr, ok := obj[0].(string); ok { | 
					
						
							|  |  |  | 		args.Address = addrstr | 
					
						
							|  |  |  | 	} else { | 
					
						
							| 
									
										
										
										
											2015-06-09 10:59:44 +02:00
										 |  |  | 		return shared.NewInvalidTypeError("address", "not a string") | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-07 09:56:49 +02:00
										 |  |  | 	if len(obj) >= 2 && obj[1] != nil { | 
					
						
							|  |  |  | 		if passphrasestr, ok := obj[1].(string); ok { | 
					
						
							| 
									
										
										
										
											2015-08-28 12:49:41 +02:00
										 |  |  | 			args.Passphrase = &passphrasestr | 
					
						
							| 
									
										
										
										
											2015-08-07 09:56:49 +02:00
										 |  |  | 		} else { | 
					
						
							|  |  |  | 			return shared.NewInvalidTypeError("passphrase", "not a string") | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if len(obj) >= 3 && obj[2] != nil { | 
					
						
							|  |  |  | 		if duration, ok := obj[2].(float64); ok { | 
					
						
							|  |  |  | 			args.Duration = int(duration) | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-06-09 10:59:44 +02:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } |