works for r=1 w=1

master
Bel LaPointe 2019-03-15 09:45:25 -06:00
parent b7771dee17
commit 648ce19313
3 changed files with 61 additions and 3 deletions

58
client/cli.go Normal file
View File

@ -0,0 +1,58 @@
package main
import (
"bufio"
"fmt"
"log"
"os"
"strings"
)
func main() {
client, err := New(strings.Split(os.Getenv("ADDR"), ",")...)
if err != nil {
panic(err)
}
reader := bufio.NewReader(os.Stdin)
for {
fmt.Print("> ")
line, err := reader.ReadString('\n')
if err != nil {
panic(err)
}
do(client, strings.TrimSpace(line))
}
}
func do(client *Client, line string) {
defer func() {
if err := recover(); err != nil {
log.Printf("err: %v", err)
}
}()
switch strings.ToLower(strings.Split(line, " ")[0]) {
case "get":
get(client, line)
case "set":
set(client, line)
case "put":
set(client, line)
default:
log.Printf("unknown command %v", line)
}
}
func get(client *Client, line string) {
words := strings.Split(line, " ")
key := words[1]
v, err := client.Get(key)
log.Printf("set: %v: %s", err, v)
}
func set(client *Client, line string) {
words := strings.Split(line, " ")
key := words[1]
value := strings.Join(words[2:], " ")
err := client.Set(key, []byte(value))
log.Printf("set: %v", err)
}

View File

@ -1,4 +1,4 @@
package client
package main
import (
"bytes"
@ -65,7 +65,7 @@ func (c *Client) Get(key string) ([]byte, error) {
}
defer resp.Body.Close()
if resp.StatusCode == http.StatusNotFound {
return nil, nil
return nil, errors.New("not found")
}
if resp.StatusCode != http.StatusOK {
return nil, errors.New("bad status on get")

View File

@ -1,4 +1,4 @@
package client
package main
import (
"fmt"