diff --git a/main.go b/main.go index 7d7e5648..68969021 100644 --- a/main.go +++ b/main.go @@ -34,9 +34,9 @@ func (e errMsg) Error() string { return e.err.Error() } func fetchJobs(url, token string) tea.Cmd { return func() tea.Msg { // TODO LEO: error handling - //body, _ := nomad.Get(fmt.Sprintf("%s/v1/jobs", url), token) + //body, _ := nomad.GetJobs(url, token) body := MockJobsResponse - + type JobResponseEntry struct { Name string } diff --git a/nomad/nomad.go b/nomad/nomad.go index 5f8eb597..1dc212c0 100644 --- a/nomad/nomad.go +++ b/nomad/nomad.go @@ -1,26 +1,13 @@ package nomad -import ( - "io/ioutil" - "net/http" -) - -func Get(url string, token string) ([]byte, error) { - client := &http.Client{} - req, err := http.NewRequest("GET", url, nil) - if err != nil { - return nil, err - } - req.Header.Set("X-Nomad-Token", token) - - resp, err := client.Do(req) - if err != nil { - return nil, err - } +var ApiPaths = map[string]string{ + "jobs": "/v1/jobs", +} - body, err := ioutil.ReadAll(resp.Body) +func GetJobs(url, token string) ([]byte, error) { + path, err := urlWithPathFor(url, "jobs") if err != nil { return nil, err } - return body, nil + return get(path, token) } diff --git a/nomad/util.go b/nomad/util.go new file mode 100644 index 00000000..78c3e566 --- /dev/null +++ b/nomad/util.go @@ -0,0 +1,34 @@ +package nomad + +import ( + "fmt" + "io/ioutil" + "net/http" +) + +func get(url, token string) ([]byte, error) { + client := &http.Client{} + req, err := http.NewRequest("GET", url, nil) + if err != nil { + return nil, err + } + req.Header.Set("X-Nomad-Token", token) + + resp, err := client.Do(req) + if err != nil { + return nil, err + } + + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return nil, err + } + return body, nil +} + +func urlWithPathFor(url, key string) (string, error) { + if val, exists := ApiPaths[key]; exists { + return fmt.Sprintf("%s/%s", url, val), nil + } + return "", fmt.Errorf("key '%s' has no associated path", key) +}