add getAddresses API method on avm

This commit is contained in:
Dan Laine 2020-05-02 17:53:28 -04:00
parent 7c11e91a53
commit 9d4ed06087
1 changed files with 34 additions and 0 deletions

View File

@ -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"`