mirror of
https://github.com/fluencelabs/tendermint
synced 2025-07-02 22:21:44 +00:00
Rename proxy to server for clarity
This commit is contained in:
127
server/keys.go
Normal file
127
server/keys.go
Normal file
@ -0,0 +1,127 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net/http"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
keys "github.com/tendermint/go-keys"
|
||||
"github.com/tendermint/go-keys/server/types"
|
||||
)
|
||||
|
||||
type Keys struct {
|
||||
manager keys.Manager
|
||||
algo string
|
||||
}
|
||||
|
||||
func New(manager keys.Manager, algo string) Keys {
|
||||
return Keys{
|
||||
manager: manager,
|
||||
algo: algo,
|
||||
}
|
||||
}
|
||||
|
||||
func (k Keys) GenerateKey(w http.ResponseWriter, r *http.Request) {
|
||||
req := types.CreateKeyRequest{
|
||||
Algo: k.algo, // default key type from cli
|
||||
}
|
||||
err := readRequest(r, &req)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
key, err := k.manager.Create(req.Name, req.Passphrase, req.Algo)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
writeSuccess(w, &key)
|
||||
}
|
||||
|
||||
func (k Keys) GetKey(w http.ResponseWriter, r *http.Request) {
|
||||
vars := mux.Vars(r)
|
||||
name := vars["name"]
|
||||
key, err := k.manager.Get(name)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
writeSuccess(w, &key)
|
||||
}
|
||||
|
||||
func (k Keys) ListKeys(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
keys, err := k.manager.List()
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
writeSuccess(w, keys)
|
||||
}
|
||||
|
||||
func (k Keys) UpdateKey(w http.ResponseWriter, r *http.Request) {
|
||||
req := types.UpdateKeyRequest{}
|
||||
err := readRequest(r, &req)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
vars := mux.Vars(r)
|
||||
name := vars["name"]
|
||||
if name != req.Name {
|
||||
writeError(w, errors.New("path and json key names don't match"))
|
||||
return
|
||||
}
|
||||
|
||||
err = k.manager.Update(req.Name, req.OldPass, req.NewPass)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
key, err := k.manager.Get(req.Name)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
writeSuccess(w, &key)
|
||||
}
|
||||
|
||||
func (k Keys) DeleteKey(w http.ResponseWriter, r *http.Request) {
|
||||
req := types.DeleteKeyRequest{}
|
||||
err := readRequest(r, &req)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
vars := mux.Vars(r)
|
||||
name := vars["name"]
|
||||
if name != req.Name {
|
||||
writeError(w, errors.New("path and json key names don't match"))
|
||||
return
|
||||
}
|
||||
|
||||
err = k.manager.Delete(req.Name, req.Passphrase)
|
||||
if err != nil {
|
||||
writeError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
// not really an error, but something generic
|
||||
resp := types.ErrorResponse{
|
||||
Success: true,
|
||||
}
|
||||
writeSuccess(w, &resp)
|
||||
}
|
||||
|
||||
func (k Keys) Register(r *mux.Router) {
|
||||
r.HandleFunc("/", k.GenerateKey).Methods("POST")
|
||||
r.HandleFunc("/", k.ListKeys).Methods("GET")
|
||||
r.HandleFunc("/{name}", k.GetKey).Methods("GET")
|
||||
r.HandleFunc("/{name}", k.UpdateKey).Methods("POST", "PUT")
|
||||
r.HandleFunc("/{name}", k.DeleteKey).Methods("DELETE")
|
||||
}
|
Reference in New Issue
Block a user