68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
|
package status
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"errors"
|
||
|
)
|
||
|
|
||
|
// PublicAPI represents a set of APIs from the `web3.status` namespace.
|
||
|
type PublicAPI struct {
|
||
|
s *Service
|
||
|
}
|
||
|
|
||
|
// NewAPI creates an instance of the status API.
|
||
|
func NewAPI(s *Service) *PublicAPI {
|
||
|
return &PublicAPI{s: s}
|
||
|
}
|
||
|
|
||
|
// LoginRequest : json request for status_login.
|
||
|
type LoginRequest struct {
|
||
|
Addr string `json:"address"`
|
||
|
Password string `json:"password"`
|
||
|
}
|
||
|
|
||
|
// LoginResponse : json response returned by status_login.
|
||
|
type LoginResponse struct {
|
||
|
AddressKeyID string `json:"address_key_id"`
|
||
|
}
|
||
|
|
||
|
// Login is an implementation of `status_login` or `web3.status.login` API
|
||
|
func (api *PublicAPI) Login(context context.Context, req LoginRequest) (res LoginResponse, err error) {
|
||
|
_, accountKey, err := api.s.am.AddressToDecryptedAccount(req.Addr, req.Password)
|
||
|
if err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if res.AddressKeyID, err = api.s.w.AddKeyPair(accountKey.PrivateKey); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if err = api.s.am.SelectAccount(req.Addr, req.Password); err != nil {
|
||
|
return
|
||
|
}
|
||
|
|
||
|
return
|
||
|
}
|
||
|
|
||
|
// SignupRequest : json request for status_signup.
|
||
|
type SignupRequest struct {
|
||
|
Password string `json:"password"`
|
||
|
}
|
||
|
|
||
|
// SignupResponse : json response returned by status_signup.
|
||
|
type SignupResponse struct {
|
||
|
Address string `json:"address"`
|
||
|
Pubkey string `json:"pubkey"`
|
||
|
Mnemonic string `json:"mnemonic"`
|
||
|
}
|
||
|
|
||
|
// Signup is an implementation of `status_signup` or `web3.status.signup` API
|
||
|
func (api *PublicAPI) Signup(context context.Context, req SignupRequest) (res SignupResponse, err error) {
|
||
|
if res.Address, res.Pubkey, res.Mnemonic, err = api.s.am.CreateAccount(req.Password); err != nil {
|
||
|
err = errors.New("could not create the specified account : " + err.Error())
|
||
|
return
|
||
|
}
|
||
|
|
||
|
return
|
||
|
}
|