Remove changes in keys

This commit is contained in:
HaoyangLiu 2018-09-23 15:41:41 +08:00
parent 0b021cfa45
commit f472839870
6 changed files with 51 additions and 136 deletions

View File

@ -1,6 +1,7 @@
package keys
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
@ -164,59 +165,47 @@ type NewKeyBody struct {
Seed string `json:"seed"`
}
func paramCheck(name, password string, kb keys.Keybase) (int, string) {
if name == "" {
return http.StatusBadRequest, "You have to specify a name for the locally stored account."
}
if password == "" {
return http.StatusBadRequest, "You have to specify a password for the locally stored account."
}
// check if already exists
infos, err := kb.List()
if err != nil {
return http.StatusInternalServerError, err.Error()
}
for _, i := range infos {
if i.GetName() == name {
return http.StatusConflict, fmt.Sprintf("Account with name %s already exists.", name)
}
}
return http.StatusOK, ""
}
// AddNewKeyRequestHandler add new key REST handler
// add new key REST handler
func AddNewKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
var kb keys.Keybase
var m NewKeyBody
kb, err := GetKeyBase()
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}
body, err := ioutil.ReadAll(r.Body)
err = json.Unmarshal(body, &m)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
err = cdc.UnmarshalJSON(body, &m)
if err != nil {
if m.Name == "" {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
w.Write([]byte("You have to specify a name for the locally stored account."))
return
}
if m.Password == "" {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte("You have to specify a password for the locally stored account."))
return
}
code, errMsg := paramCheck(m.Name, m.Password, kb)
if code != http.StatusOK {
w.WriteHeader(code)
w.Write([]byte(errMsg))
return
// check if already exists
infos, err := kb.List()
for _, i := range infos {
if i.GetName() == m.Name {
w.WriteHeader(http.StatusConflict)
w.Write([]byte(fmt.Sprintf("Account with name %s already exists.", m.Name)))
return
}
}
// create account
seed := m.Seed
if seed == "" {
@ -238,7 +227,7 @@ func AddNewKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
keyOutput.Seed = seed
bz, err := cdc.MarshalJSON(keyOutput)
bz, err := json.Marshal(keyOutput)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
@ -270,67 +259,3 @@ func SeedRequestHandler(w http.ResponseWriter, r *http.Request) {
seed := getSeed(algo)
w.Write([]byte(seed))
}
// RecoverKeyBody is recover key request REST body
type RecoverKeyBody struct {
Password string `json:"password"`
Seed string `json:"seed"`
}
// RecoverKeyResuestHandler is the handler of creating seed in swagger rest server
func RecoverKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
name := vars["name"]
var m RecoverKeyBody
body, err := ioutil.ReadAll(r.Body)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
err = cdc.UnmarshalJSON(body, &m)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
kb, err := GetKeyBase()
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
code, errMsg := paramCheck(name, m.Password, kb)
if code != http.StatusOK {
w.WriteHeader(code)
w.Write([]byte(errMsg))
return
}
info, err := kb.CreateKey(name, m.Seed, m.Password)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
keyOutput, err := Bech32KeyOutput(info)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
bz, err := cdc.MarshalJSON(keyOutput)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.Write([]byte(err.Error()))
return
}
w.Write(bz)
}

View File

@ -1,15 +1,15 @@
package keys
import (
"encoding/json"
"fmt"
"net/http"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/crypto/keys"
keys "github.com/cosmos/cosmos-sdk/crypto/keys"
"github.com/gorilla/mux"
"github.com/spf13/cobra"
"io/ioutil"
)
func deleteKeyCommand() *cobra.Command {
@ -65,23 +65,17 @@ func DeleteKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
var kb keys.Keybase
var m DeleteKeyBody
body, err := ioutil.ReadAll(r.Body)
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&m)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
err = cdc.UnmarshalJSON(body, &m)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.WriteHeader(400)
w.Write([]byte(err.Error()))
return
}
kb, err = GetKeyBase()
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}
@ -89,10 +83,10 @@ func DeleteKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
// TODO handle error if key is not available or pass is wrong
err = kb.Delete(name, m.Password)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}
w.WriteHeader(http.StatusOK)
w.WriteHeader(200)
}

View File

@ -1,6 +1,7 @@
package keys
import (
"encoding/json"
"net/http"
"github.com/spf13/cobra"
@ -37,13 +38,13 @@ func runListCmd(cmd *cobra.Command, args []string) error {
func QueryKeysRequestHandler(w http.ResponseWriter, r *http.Request) {
kb, err := GetKeyBase()
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}
infos, err := kb.List()
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}
@ -54,13 +55,13 @@ func QueryKeysRequestHandler(w http.ResponseWriter, r *http.Request) {
}
keysOutput, err := Bech32KeysOutput(infos)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}
output, err := cdc.MarshalJSONIndent(keysOutput, "", " ")
output, err := json.MarshalIndent(keysOutput, "", " ")
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}

View File

@ -33,7 +33,7 @@ func Commands() *cobra.Command {
func RegisterRoutes(r *mux.Router) {
r.HandleFunc("/keys", QueryKeysRequestHandler).Methods("GET")
r.HandleFunc("/keys", AddNewKeyRequestHandler).Methods("POST")
r.HandleFunc("/keys/{name}/recover", RecoverKeyRequestHandler).Methods("POST")
r.HandleFunc("/keys/seed", SeedRequestHandler).Methods("GET")
r.HandleFunc("/keys/{name}", GetKeyRequestHandler).Methods("GET")
r.HandleFunc("/keys/{name}", UpdateKeyRequestHandler).Methods("PUT")
r.HandleFunc("/keys/{name}", DeleteKeyRequestHandler).Methods("DELETE")

View File

@ -1,6 +1,7 @@
package keys
import (
"encoding/json"
"fmt"
"net/http"
@ -101,7 +102,7 @@ func GetKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
bechKeyOut, err := getBechKeyOut(bechPrefix)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.WriteHeader(400)
w.Write([]byte(err.Error()))
return
}
@ -110,21 +111,21 @@ func GetKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
// TODO: check for the error if key actually does not exist, instead of
// assuming this as the reason
if err != nil {
w.WriteHeader(http.StatusNotFound)
w.WriteHeader(404)
w.Write([]byte(err.Error()))
return
}
keyOutput, err := bechKeyOut(info)
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}
output, err := cdc.MarshalJSONIndent(keyOutput, "", " ")
output, err := json.MarshalIndent(keyOutput, "", " ")
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}

View File

@ -1,15 +1,15 @@
package keys
import (
"encoding/json"
"fmt"
"net/http"
"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/crypto/keys"
keys "github.com/cosmos/cosmos-sdk/crypto/keys"
"github.com/gorilla/mux"
"github.com/spf13/cobra"
"io/ioutil"
)
func updateKeyCommand() *cobra.Command {
@ -66,23 +66,17 @@ func UpdateKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
var kb keys.Keybase
var m UpdateKeyBody
body, err := ioutil.ReadAll(r.Body)
decoder := json.NewDecoder(r.Body)
err := decoder.Decode(&m)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.Write([]byte(err.Error()))
return
}
err = cdc.UnmarshalJSON(body, &m)
if err != nil {
w.WriteHeader(http.StatusBadRequest)
w.WriteHeader(400)
w.Write([]byte(err.Error()))
return
}
kb, err = GetKeyBase()
if err != nil {
w.WriteHeader(http.StatusInternalServerError)
w.WriteHeader(500)
w.Write([]byte(err.Error()))
return
}
@ -92,10 +86,10 @@ func UpdateKeyRequestHandler(w http.ResponseWriter, r *http.Request) {
// TODO check if account exists and if password is correct
err = kb.Update(name, m.OldPassword, getNewpass)
if err != nil {
w.WriteHeader(http.StatusUnauthorized)
w.WriteHeader(401)
w.Write([]byte(err.Error()))
return
}
w.WriteHeader(http.StatusOK)
w.WriteHeader(200)
}