commit 4bb0c37d15e6f1b55ebfc0060ab4f39a55e7647e
parent 1a9223a3e8250b1519d24ee2cec5faf798e9377d
Author: Jack Mordaunt <jackmordaunt@gmail.com>
Date: Mon, 19 Nov 2018 22:56:19 +1300
[+] Accept object to write logs to.
Diffstat:
1 file changed, 24 insertions(+), 8 deletions(-)
diff --git a/cmd/desktop/server.go b/cmd/desktop/server.go
@@ -25,6 +25,7 @@ type UI struct {
Router *mux.Router
Static http.Handler
Verbose bool
+ Out io.Writer
gifmap map[string]http.Handler
init sync.Once
@@ -42,8 +43,14 @@ func (ui *UI) ServeHTTP(w http.ResponseWriter, r *http.Request) {
func (ui *UI) routes() {
if ui.Verbose {
+ var out io.Writer
+ if ui.Out != nil {
+ out = ui.Out
+ } else {
+ out = os.Stdout
+ }
log := Log{
- Logger: log.New(LogWriteHeaderErrors{Out: os.Stdout}, "", 0),
+ Logger: log.New(LogWriteHeaderErrors{Out: out}, "", 0),
ShowBody: true,
}
ui.Router.Use(log.Middleware)
@@ -140,6 +147,7 @@ func (ui *UI) gifs() http.HandlerFunc {
// gif isn't ready to be downloaded, an appropriate message is returned.
type Gif struct {
Upgrader *websocket.Upgrader
+ Out io.Writer
file *RenderedGif
subs map[*websocket.Conn]struct{}
@@ -179,7 +187,7 @@ func (g *Gif) ServeHTTP(w http.ResponseWriter, r *http.Request) {
func (g *Gif) subscribe(w http.ResponseWriter, r *http.Request) {
c, err := g.Upgrader.Upgrade(w, r, nil)
if err != nil {
- log.Printf("upgrading websocket: %v", err)
+ g.logf("upgrading websocket: %v", err)
return
}
g.connections <- c
@@ -208,30 +216,30 @@ func (g *Gif) run() {
g.file = img
for s := range g.subs {
if err := s.WriteJSON(msg{}); err != nil {
- log.Printf("writing json to websocket: %v", err)
+ g.logf("writing json to websocket: %v", err)
}
if err := s.Close(); err != nil {
- log.Printf("closing websocket: %v", err)
+ g.logf("closing websocket: %v", err)
}
delete(g.subs, s)
}
case err := <-g.failed:
for s := range g.subs {
if err := s.WriteJSON(msg{Err: err.Error()}); err != nil {
- log.Printf("writing json to websocket: %v", err)
+ g.logf("writing json to websocket: %v", err)
}
if err := s.Close(); err != nil {
- log.Printf("closing websocket: %v", err)
+ g.logf("closing websocket: %v", err)
}
delete(g.subs, s)
}
case conn := <-g.connections:
if g.file != nil {
if err := conn.WriteJSON(msg{}); err != nil {
- log.Printf("writing json to websocket: %v", err)
+ g.logf("writing json to websocket: %v", err)
}
if err := conn.Close(); err != nil {
- log.Printf("closing websocket: %v", err)
+ g.logf("closing websocket: %v", err)
}
} else {
g.subs[conn] = struct{}{}
@@ -239,3 +247,10 @@ func (g *Gif) run() {
}
}
}
+
+func (g *Gif) logf(f string, v ...interface{}) (int, error) {
+ if g.Out == nil {
+ return 0, nil
+ }
+ return fmt.Fprintf(g.Out, f, v...)
+}
+\ No newline at end of file