func decodeBulkRulesPostRequest()

in prometheus/handlers/handlers.go [276:295]


func decodeBulkRulesPostRequest(c echo.Context) ([]rulefmt.Rule, error) {
	body, err := ioutil.ReadAll(c.Request().Body)
	if err != nil {
		glog.Errorf("Error reading bulk rules payload: %v", err)
		return []rulefmt.Rule{}, fmt.Errorf("error reading request body: %v", err)
	}
	var payload []rulefmt.Rule
	err = json.Unmarshal(body, &payload)
	if err == nil {
		return payload, nil
	}
	// Try to unmarshal into the RuleJSONWrapper struct if prometheus struct doesn't work
	jsonPayload := []alert.RuleJSONWrapper{}
	err = json.Unmarshal(body, &jsonPayload)
	if err != nil {
		glog.Errorf("Error unmarshaling bulk rules: %v", err)
		return []rulefmt.Rule{}, fmt.Errorf("error unmarshalling payload: %v", err)
	}
	return rulesFromJSON(jsonPayload)
}