diff --git a/api/api.go b/api/api.go index b8e790e..7801851 100644 --- a/api/api.go +++ b/api/api.go @@ -156,6 +156,17 @@ func (a *API) JSONHandler(w http.ResponseWriter, r *http.Request) *appError { return nil } +func (a *API) JSONAllHandler(w http.ResponseWriter, r *http.Request) *appError { + contentType := APPLICATION_JSON + b, err := json.MarshalIndent(r.Header, "", " ") + if err != nil { + return internalServerError(err).WithContentType(contentType) + } + w.Header().Set("Content-Type", contentType) + w.Write(b) + return nil +} + func (a *API) CLIHandler(w http.ResponseWriter, r *http.Request) *appError { _, v, err := headerPairFromRequest(r) if err != nil { @@ -230,6 +241,8 @@ func (a *API) Handlers() http.Handler { // JSON r.Handle("/", appHandler(a.JSONHandler)).Methods("GET").Headers("Accept", APPLICATION_JSON) + r.Handle("/all", appHandler(a.JSONAllHandler)).Methods("GET").Headers("Accept", APPLICATION_JSON) + r.Handle("/all.json", appHandler(a.JSONAllHandler)).Methods("GET") r.Handle("/{header}", appHandler(a.JSONHandler)).Methods("GET").Headers("Accept", APPLICATION_JSON) r.Handle("/{header}.json", appHandler(a.JSONHandler)).Methods("GET") diff --git a/api/api_test.go b/api/api_test.go index 94ca899..d77b62e 100644 --- a/api/api_test.go +++ b/api/api_test.go @@ -39,6 +39,10 @@ func TestGetIP(t *testing.T) { return fmt.Sprintf("{\n \"%s\": \"%s\"\n}", k, v) } s := httptest.NewServer(New().Handlers()) + jsonAll := "{\n \"Accept-Encoding\": [\n \"gzip\"\n ]," + + "\n \"X-Ifconfig-Country\": [\n \"\"\n ]," + + "\n \"X-Ifconfig-Ip\": [\n \"127.0.0.1\"\n ]\n}" + var tests = []struct { url string json bool @@ -53,7 +57,9 @@ func TestGetIP(t *testing.T) { {s.URL, true, toJSON("x-ifconfig-ip", "127.0.0.1"), "", 200}, {s.URL + "/foo", false, "no value found for: foo", "curl/7.26.0", 404}, {s.URL + "/foo", true, "{\n \"error\": \"no value found for: foo\"\n}", "curl/7.26.0", 404}, + {s.URL + "/all.json", false, jsonAll, "", 200}, } + for _, tt := range tests { out, status, err := httpGet(tt.url, tt.json, tt.userAgent) if err != nil { diff --git a/index.html b/index.html index 004adb1..82f71d1 100644 --- a/index.html +++ b/index.html @@ -61,6 +61,8 @@ {{end}} {{end}} +
{{ .Cmd.String }} ifconfig.co/all.json
{{ .JSON }}