mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package v1
|
|
|
|
import (
|
|
"github.com/coreos/etcd/server"
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
// The Server interface provides all the methods required for the v1 API.
|
|
type Server interface {
|
|
CommitIndex() uint64
|
|
Term() uint64
|
|
Dispatch(http.ResponseWriter, *http.Request, Command)
|
|
}
|
|
|
|
// Converts an event object into a response object.
|
|
func eventToResponse(event *store.Event) interface{} {
|
|
if !event.Dir {
|
|
response := &store.Response{
|
|
Action: event.Action,
|
|
Key: event.Key,
|
|
Value: event.Value,
|
|
PrevValue: event.PrevValue,
|
|
Index: event.Index,
|
|
TTL: event.TTL,
|
|
Expiration: event.Expiration,
|
|
}
|
|
|
|
if response.Action == store.Create || response.Action == store.Update {
|
|
response.Action = "set"
|
|
if response.PrevValue == "" {
|
|
response.NewKey = true
|
|
}
|
|
}
|
|
|
|
return response
|
|
} else {
|
|
responses := make([]*store.Response, len(event.KVPairs))
|
|
|
|
for i, kv := range event.KVPairs {
|
|
responses[i] = &store.Response{
|
|
Action: event.Action,
|
|
Key: kv.Key,
|
|
Value: kv.Value,
|
|
Dir: kv.Dir,
|
|
Index: event.Index,
|
|
}
|
|
}
|
|
return responses
|
|
}
|
|
}
|