Readd all handler

Fixes #6.
This commit is contained in:
Martin Polden 2015-09-18 17:42:43 +02:00
parent 255826db99
commit ccd3c7a7bb
3 changed files with 21 additions and 0 deletions

View File

@ -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")

View File

@ -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 {

View File

@ -61,6 +61,8 @@
</tr>
{{end}}
{{end}}
<td><code><span class="command">{{ .Cmd.String }}</span> ifconfig.co/all.json</code></td>
<td><pre class="response">{{ .JSON }}</pre></td>
</tbody>
</table>
</div>