MCPcopy
hub / github.com/uber-go/zap / serveHTTP

Method serveHTTP

http_handler.go:78–107  ·  view source on GitHub ↗
(w http.ResponseWriter, r *http.Request)

Source from the content-addressed store, hash-verified

76}
77
78func (lvl AtomicLevel) serveHTTP(w http.ResponseWriter, r *http.Request) error {
79 type errorResponse struct {
80 Error string `json:"error"`
81 }
82 type payload struct {
83 Level zapcore.Level `json:"level"`
84 }
85
86 enc := json.NewEncoder(w)
87
88 switch r.Method {
89 case http.MethodGet:
90 return enc.Encode(payload{Level: lvl.Level()})
91
92 case http.MethodPut:
93 requestedLvl, err := decodePutRequest(r.Header.Get("Content-Type"), r)
94 if err != nil {
95 w.WriteHeader(http.StatusBadRequest)
96 return enc.Encode(errorResponse{Error: err.Error()})
97 }
98 lvl.SetLevel(requestedLvl)
99 return enc.Encode(payload{Level: lvl.Level()})
100
101 default:
102 w.WriteHeader(http.StatusMethodNotAllowed)
103 return enc.Encode(errorResponse{
104 Error: "Only GET and PUT are supported.",
105 })
106 }
107}
108
109// Decodes incoming PUT requests and returns the requested logging level.
110func decodePutRequest(contentType string, r *http.Request) (zapcore.Level, error) {

Callers 1

ServeHTTPMethod · 0.95

Calls 6

LevelMethod · 0.95
SetLevelMethod · 0.95
decodePutRequestFunction · 0.85
EncodeMethod · 0.65
GetMethod · 0.45
ErrorMethod · 0.45

Tested by

no test coverage detected