giffer

Create .gif images from sites like youtube.com
Log | Files | Refs | LICENSE

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:
Mcmd/desktop/server.go | 32++++++++++++++++++++++++--------
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