func decodeReceiverPostRequest()

in alertmanager/handlers/handlers.go [341:362]


func decodeReceiverPostRequest(c echo.Context) (config.Receiver, error) {
	body, err := ioutil.ReadAll(c.Request().Body)
	if err != nil {
		glog.Errorf("error decoding receiver config: %v", err)
		return config.Receiver{}, fmt.Errorf("error reading request body: %v", err)
	}
	receiver := config.Receiver{}
	err = json.Unmarshal(body, &receiver)
	if err == nil {
		return receiver, nil
	}

	// Try to unmarshal into the ReceiverJSONWrapper struct if prometheus struct doesn't work
	jsonPayload := config.ReceiverJSONWrapper{}
	err = json.Unmarshal(body, &jsonPayload)
	if err != nil {
		glog.Errorf("error decoding receiver config: %v", err)
		return receiver, fmt.Errorf("error unmarshalling payload: %v", err)
	}

	return jsonPayload.ToReceiverFmt()
}