Skip to content

Commit 68f7f27

Browse files
committed
logger: add proper decoding on log streams
1 parent 10a2378 commit 68f7f27

File tree

2 files changed

+21
-24
lines changed

2 files changed

+21
-24
lines changed

logger.go

Lines changed: 17 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,42 @@
11
package shell
22

33
import (
4+
"context"
45
"encoding/json"
5-
"fmt"
66
"io"
7-
"net/http"
8-
"strings"
97
)
108

119
// Logger is used to handle incoming logs from the ipfs node
1210
type Logger struct {
13-
r io.ReadCloser
11+
resp io.ReadCloser
12+
dec *json.Decoder
1413
}
1514

1615
// Next is used to retrieve the next event from the logging system
1716
func (l Logger) Next() (map[string]interface{}, error) {
1817
var out map[string]interface{}
19-
if err := json.NewDecoder(l.r).Decode(&out); err != nil {
20-
return nil, err
21-
}
22-
return out, nil
18+
return out, l.dec.Decode(&out)
2319
}
2420

2521
// Close is used to close our reader
2622
func (l Logger) Close() error {
27-
return l.r.Close()
23+
return l.resp.Close()
2824
}
2925

3026
// GetLogs is used to retrieve a parsable logger object
31-
func (s *Shell) GetLogs() (Logger, error) {
32-
var url string
33-
if !strings.HasPrefix(s.url, "http://") || !strings.HasPrefix(s.url, "https://") {
34-
url = fmt.Sprintf("http://%s/api/v0/log/tail", s.url)
35-
} else {
36-
url = s.url
37-
}
38-
req, err := http.NewRequest("GET", url, nil)
27+
func (s *Shell) GetLogs(ctx context.Context) (Logger, error) {
28+
29+
resp, err := s.Request("log/tail").Send(ctx)
3930
if err != nil {
40-
return Logger{}, err
31+
return Logger{}, nil
4132
}
42-
hc := &http.Client{}
43-
resp, err := hc.Do(req)
44-
if err != nil {
45-
return Logger{}, err
33+
if resp.Error != nil {
34+
resp.Close()
35+
return Logger{}, resp.Error
4636
}
47-
return Logger{resp.Body}, nil
37+
return newLogger(resp.Output), nil
38+
}
39+
40+
func newLogger(resp io.ReadCloser) Logger {
41+
return Logger{resp, json.NewDecoder(resp)}
4842
}

logger_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
package shell
22

33
import (
4+
"context"
45
"testing"
56
)
67

78
func Test_Logger(t *testing.T) {
9+
ctx, cancel := context.WithCancel(context.Background())
10+
defer cancel()
811
sh := NewShell(shellUrl)
9-
logger, err := sh.GetLogs()
12+
logger, err := sh.GetLogs(ctx)
1013
if err != nil {
1114
t.Fatal(err)
1215
}

0 commit comments

Comments
 (0)