Skip to content

Commit cfb1a27

Browse files
committed
handle unknown languages
1 parent bdfc152 commit cfb1a27

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

api/api.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package api
33
import (
44
"bytes"
55
"encoding/json"
6+
"errors"
67
"fmt"
78
"net/http"
89
"strings"
@@ -14,6 +15,8 @@ var (
1415
// UserAgent lets the API know where the call is being made from.
1516
// It's set from main() so that we have access to the version.
1617
UserAgent string
18+
19+
UnknownLanguageError = errors.New("the language is unknown")
1720
)
1821

1922
// PayloadError represents an error message from the API.
@@ -143,6 +146,9 @@ func List(language, host string) ([]string, error) {
143146
return nil, err
144147
}
145148
defer res.Body.Close()
149+
if res.StatusCode != http.StatusOK {
150+
return nil, UnknownLanguageError
151+
}
146152

147153
var payload struct {
148154
Track Track

api/api_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,13 @@ func TestListTrack(t *testing.T) {
3030
assert.Equal(t, len(problems), 34)
3131
assert.Equal(t, problems[0], "bob")
3232
}
33+
34+
func TestUnknownLanguage(t *testing.T) {
35+
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
36+
http.NotFound(w, r)
37+
}))
38+
defer ts.Close()
39+
40+
_, err := List("rubbbby", ts.URL)
41+
assert.Equal(t, err, UnknownLanguageError)
42+
}

0 commit comments

Comments
 (0)