Skip to content

Commit c529193

Browse files
committed
Add debug flag which prints out responses to stderr.
1 parent 3146b4b commit c529193

File tree

3 files changed

+34
-5
lines changed

3 files changed

+34
-5
lines changed

internal/app/api.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"io"
99
"net/http"
1010
"net/url"
11+
"os"
1112
"strings"
1213
"time"
1314
)
@@ -35,9 +36,23 @@ func Auth(config SmartHubConfig) (string, error) {
3536
if err != nil {
3637
return "", err
3738
}
38-
decoder := json.NewDecoder(resp.Body)
39+
defer func(Body io.ReadCloser) {
40+
err := Body.Close()
41+
if err != nil {
42+
fmt.Println("Error: failed to close response body")
43+
}
44+
}(resp.Body)
45+
reader := resp.Body.(io.Reader)
46+
if debug {
47+
_, _ = fmt.Fprintln(os.Stderr, "\nDEBUG: Response from auth endpoint:")
48+
reader = io.TeeReader(reader, os.Stderr)
49+
}
50+
decoder := json.NewDecoder(reader)
3951
oauth := &OAuth{}
4052
err = decoder.Decode(oauth)
53+
if debug {
54+
_, _ = fmt.Fprintf(os.Stderr, "\n\n")
55+
}
4156
if err != nil {
4257
return "", err
4358
}

internal/app/main.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,17 @@ type Config struct {
3737
InfluxDB InfluxConfig `yaml:"influxdb"`
3838
}
3939

40+
var debug bool
41+
4042
// Main runs the program.
4143
func Main() error {
4244
configFlag := flag.String("config", "config.yaml", "Config file")
4345
startFlag := flag.String("start", "", "Start date of period to extract from electric co.")
4446
endFlag := flag.String("end", "", "End date of period to extract from electric co.")
47+
debugFlag := flag.Bool("debug", false, "Enable to print out verbose debugging logs.")
4548
flag.Parse()
4649

50+
debug = *debugFlag
4751
// read config
4852
file, err := os.ReadFile(*configFlag)
4953
if err != nil {

internal/app/parser.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"errors"
66
"fmt"
77
"io"
8+
"os"
89
"time"
910
)
1011

@@ -64,22 +65,31 @@ func (t *RetryableError) Error() string {
6465

6566
// ParseReader parses the json response received in FetchData from the SmartHub poll api.
6667
// It can return a normal error, a RetryableError, or parsed ElectricUsage.
67-
func ParseReader(reader io.ReadCloser) ([]ElectricUsage, error) {
68+
func ParseReader(readCloser io.ReadCloser) ([]ElectricUsage, error) {
6869
defer func() {
69-
if err := reader.Close(); err != nil {
70-
panic(err)
70+
if err := readCloser.Close(); err != nil {
71+
fmt.Println("Error: failed to close response body")
7172
}
7273
}()
74+
reader := readCloser.(io.Reader)
75+
if debug {
76+
_, _ = fmt.Fprintln(os.Stderr, "\nDEBUG: Response from poll endpoint:")
77+
reader = io.TeeReader(readCloser, os.Stderr)
78+
}
7379
resp := &Response{}
7480
err := json.NewDecoder(reader).Decode(resp)
7581
if err != nil {
7682
return nil, err
7783
}
84+
if debug {
85+
_, _ = fmt.Fprintln(os.Stderr, "\n\nDEBUG: Parsed data from poll endpoint:")
86+
_, _ = fmt.Fprintf(os.Stderr, "%+v\n\n", resp)
87+
}
7888
if resp.Status != "COMPLETE" {
7989
fmt.Println("Data not ready, retrying...")
8090
return nil, NewRetryableError("data processing not complete")
8191
}
82-
fmt.Println("Data received, parsing...")
92+
fmt.Println("Data received, transforming...")
8393
datas, ok := resp.Data["ELECTRIC"]
8494
if !ok {
8595
return nil, errors.New("no ELECTRIC key")

0 commit comments

Comments
 (0)