MCPcopy
hub / github.com/grafana/dskit / ServeHTTP

Method ServeHTTP

kv/memberlist/http_status_handler.go:42–136  ·  view source on GitHub ↗
(w http.ResponseWriter, req *http.Request)

Source from the content-addressed store, hash-verified

40}
41
42func (h HTTPStatusHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
43 kv := h.kvs.getKV()
44 if kv == nil {
45 w.Header().Set("Content-Type", "text/plain")
46 // Ignore inactionable errors.
47 _, _ = w.Write([]byte("This instance doesn't use memberlist."))
48 return
49 }
50
51 const (
52 downloadKeyParam = "downloadKey"
53 viewKeyParam = "viewKey"
54 viewMsgParam = "viewMsg"
55 deleteMessagesParam = "deleteMessages"
56 )
57
58 if err := req.ParseForm(); err == nil {
59 if req.Form[downloadKeyParam] != nil {
60 downloadKey(w, kv, kv.storeCopy(), req.Form[downloadKeyParam][0]) // Use first value, ignore the rest.
61 return
62 }
63
64 if req.Form[viewKeyParam] != nil {
65 viewKey(w, kv.storeCopy(), req.Form[viewKeyParam][0], getFormat(req))
66 return
67 }
68
69 if req.Form[viewMsgParam] != nil {
70 msgID, err := strconv.Atoi(req.Form[viewMsgParam][0])
71 if err != nil {
72 http.Error(w, err.Error(), http.StatusBadRequest)
73 return
74 }
75
76 sent, received := kv.getSentAndReceivedMessages()
77
78 for _, m := range append(sent, received...) {
79 if m.ID == msgID {
80 viewMessage(w, kv, m, getFormat(req))
81 return
82 }
83 }
84
85 http.Error(w, "message not found", http.StatusNotFound)
86 return
87 }
88
89 if len(req.Form[deleteMessagesParam]) > 0 && req.Form[deleteMessagesParam][0] == "true" {
90 kv.deleteSentReceivedMessages()
91
92 // Redirect back.
93 w.Header().Set("Location", "?"+deleteMessagesParam+"=false")
94 w.WriteHeader(http.StatusFound)
95 return
96 }
97 }
98
99 members := kv.memberlist.Members()

Callers

nothing calls this directly

Calls 15

downloadKeyFunction · 0.85
viewKeyFunction · 0.85
getFormatFunction · 0.85
viewMessageFunction · 0.85
computeStoreSizesFunction · 0.85
getKVMethod · 0.80
storeCopyMethod · 0.80
SetMethod · 0.65
GetMethod · 0.65
EncodeMethod · 0.65

Tested by

no test coverage detected