tile38/internal/server/output.go

38 lines
823 B
Go
Raw Normal View History

package server
2016-03-29 22:29:15 +03:00
import (
"strings"
"time"
2017-10-05 18:20:40 +03:00
"github.com/tidwall/resp"
2016-03-29 22:29:15 +03:00
)
2022-09-28 00:19:57 +03:00
// OUTPUT [resp|json]
func (s *Server) cmdOUTPUT(msg *Message) (resp.Value, error) {
2016-03-29 22:29:15 +03:00
start := time.Now()
2017-10-05 18:20:40 +03:00
2022-09-28 00:19:57 +03:00
args := msg.Args
switch len(args) {
case 1:
if msg.OutputType == JSON {
return resp.StringValue(`{"ok":true,"output":"json","elapsed":` +
time.Since(start).String() + `}`), nil
2016-03-29 22:29:15 +03:00
}
2022-09-28 00:19:57 +03:00
return resp.StringValue("resp"), nil
case 2:
2016-03-29 22:29:15 +03:00
// Setting the original message output type will be picked up by the
// server prior to the next command being executed.
2022-09-28 00:19:57 +03:00
switch strings.ToLower(args[1]) {
2016-03-29 22:29:15 +03:00
default:
2022-09-28 00:19:57 +03:00
return retrerr(errInvalidArgument(args[1]))
2016-03-29 22:29:15 +03:00
case "json":
msg.OutputType = JSON
2016-03-29 22:29:15 +03:00
case "resp":
msg.OutputType = RESP
2016-03-29 22:29:15 +03:00
}
return OKMessage(msg, start), nil
2016-03-29 22:29:15 +03:00
default:
2022-09-28 00:19:57 +03:00
return retrerr(errInvalidNumberOfArguments)
2016-03-29 22:29:15 +03:00
}
}