func GetPostTemplateFileHandler()

in alertmanager/handlers/template_handlers.go [38:67]


func GetPostTemplateFileHandler(amClient client.AlertmanagerClient, tmplClient client.TemplateClient) func(c echo.Context) error {
	return func(c echo.Context) error {
		filename := c.Get(templateFilenameParam).(string)

		exists, err := fileExists(amClient, tmplClient, filename)
		if err != nil {
			return echo.NewHTTPError(http.StatusInternalServerError, err.Error())
		}
		if exists {
			return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("file %s already exists", filename))
		}

		body, err := readStringBody(c)
		if err != nil {
			return echo.NewHTTPError(http.StatusInternalServerError, err.Error())
		}

		err = tmplClient.CreateTemplateFile(filename, body)
		if err != nil {
			return echo.NewHTTPError(http.StatusInternalServerError, fmt.Sprintf("error creating template file: %v", err))
		}

		err = amClient.AddTemplateFile(getFullFilePath(filename, tmplClient))
		if err != nil {
			return echo.NewHTTPError(http.StatusInternalServerError, fmt.Sprintf("error creating template file: %v", err))
		}

		return c.String(http.StatusOK, "Created")
	}
}