()
| 384 | } |
| 385 | |
| 386 | func (t *App) statusHandler() http.HandlerFunc { |
| 387 | return func(w http.ResponseWriter, r *http.Request) { |
| 388 | var errs []error |
| 389 | msg := bytes.Buffer{} |
| 390 | |
| 391 | simpleEndpoints := map[string]func(io.Writer) error{ |
| 392 | "version": t.writeStatusVersion, |
| 393 | "services": t.writeStatusServices, |
| 394 | "endpoints": t.writeStatusEndpoints, |
| 395 | } |
| 396 | |
| 397 | wrapStatus := func(endpoint string) { |
| 398 | msg.WriteString("GET /status/" + endpoint + "\n") |
| 399 | |
| 400 | switch endpoint { |
| 401 | case "runtime_config": |
| 402 | err := t.writeRuntimeConfig(&msg, r) |
| 403 | if err != nil { |
| 404 | errs = append(errs, err) |
| 405 | } |
| 406 | case "config": |
| 407 | err := t.writeStatusConfig(&msg, r) |
| 408 | if err != nil { |
| 409 | errs = append(errs, err) |
| 410 | } |
| 411 | default: |
| 412 | err := simpleEndpoints[endpoint](&msg) |
| 413 | if err != nil { |
| 414 | errs = append(errs, err) |
| 415 | } |
| 416 | } |
| 417 | } |
| 418 | |
| 419 | vars := mux.Vars(r) |
| 420 | |
| 421 | if endpoint, ok := vars["endpoint"]; ok { |
| 422 | wrapStatus(endpoint) |
| 423 | } else { |
| 424 | wrapStatus("version") |
| 425 | wrapStatus("services") |
| 426 | wrapStatus("endpoints") |
| 427 | wrapStatus("runtime_config") |
| 428 | wrapStatus("config") |
| 429 | } |
| 430 | |
| 431 | w.Header().Set("Content-Type", "text/plain") |
| 432 | |
| 433 | joinErrors := func(errs []error) error { |
| 434 | if len(errs) == 0 { |
| 435 | return nil |
| 436 | } |
| 437 | var err error |
| 438 | |
| 439 | for _, e := range errs { |
| 440 | if e != nil { |
| 441 | if err == nil { |
| 442 | err = e |
| 443 | } else { |
no test coverage detected