(w http.ResponseWriter, req *http.Request)
| 40 | } |
| 41 | |
| 42 | func (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() |
nothing calls this directly
no test coverage detected