mirror of https://github.com/poanetwork/gecko.git
add getAddresses API method on avm
This commit is contained in:
parent
7c11e91a53
commit
9d4ed06087
|
@ -448,6 +448,40 @@ func (service *Service) CreateAddress(r *http.Request, args *CreateAddressArgs,
|
|||
return nil
|
||||
}
|
||||
|
||||
// GetAddressesArgs ...
|
||||
type GetAddressesArgs struct {
|
||||
// User that we're listing the addresses of
|
||||
Username string `json:"username"`
|
||||
Password string `json:"password"`
|
||||
}
|
||||
|
||||
// GetAddressesResponse ...
|
||||
type GetAddressesResponse struct {
|
||||
// Each element is an address controlled by specified account
|
||||
Addresses []string `json:"addresses"`
|
||||
}
|
||||
|
||||
// GetAddresses returns all of the addresses controlled by user [args.Username]
|
||||
func (service *Service) GetAddresses(_ *http.Request, args *GetAddressesArgs, response *GetAddressesResponse) error {
|
||||
db, err := service.vm.ctx.Keystore.GetDatabase(args.Username, args.Password)
|
||||
if err != nil {
|
||||
return fmt.Errorf("problem retrieving user: %w", err)
|
||||
}
|
||||
|
||||
user := userState{vm: service.vm}
|
||||
addresses, err := user.Addresses(db)
|
||||
if err != nil {
|
||||
response.Addresses = nil
|
||||
return nil
|
||||
}
|
||||
|
||||
for _, address := range addresses {
|
||||
addressBytes := address.Key()
|
||||
response.Addresses = append(response.Addresses, service.vm.Format(addressBytes[:]))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// ExportKeyArgs are arguments for ExportKey
|
||||
type ExportKeyArgs struct {
|
||||
Username string `json:"username"`
|
||||
|
|
Loading…
Reference in New Issue