(w http.ResponseWriter, r *http.Request)
| 823 | } |
| 824 | |
| 825 | func decodeConfigRequest(w http.ResponseWriter, r *http.Request) (configRequest, bool) { |
| 826 | var req configRequest |
| 827 | if err := json.NewDecoder(r.Body).Decode(&req); err != nil { |
| 828 | writeJSON(w, http.StatusBadRequest, map[string]any{"error": "invalid json body"}) |
| 829 | return configRequest{}, false |
| 830 | } |
| 831 | if req.Config == "" { |
| 832 | writeJSON(w, http.StatusBadRequest, map[string]any{"error": "config is required"}) |
| 833 | return configRequest{}, false |
| 834 | } |
| 835 | return req, true |
| 836 | } |
| 837 | |
| 838 | func writeNodeError(w http.ResponseWriter, err error) { |
| 839 | status := http.StatusUnprocessableEntity // 422,不被 Cloudflare 拦截 |
no test coverage detected