mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			99 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
| package repo
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 
 | |
| 	"github.com/grafana/grafana/pkg/apimachinery/errutil"
 | |
| )
 | |
| 
 | |
| type ErrResponse4xx struct {
 | |
| 	message           string
 | |
| 	statusCode        int
 | |
| 	compatibilityInfo CompatOpts
 | |
| }
 | |
| 
 | |
| func newErrResponse4xx(statusCode int) ErrResponse4xx {
 | |
| 	return ErrResponse4xx{
 | |
| 		statusCode: statusCode,
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func (e ErrResponse4xx) Message() string {
 | |
| 	return e.message
 | |
| }
 | |
| 
 | |
| func (e ErrResponse4xx) StatusCode() int {
 | |
| 	return e.statusCode
 | |
| }
 | |
| 
 | |
| func (e ErrResponse4xx) withMessage(message string) ErrResponse4xx {
 | |
| 	e.message = message
 | |
| 	return e
 | |
| }
 | |
| 
 | |
| func (e ErrResponse4xx) withCompatibilityInfo(compatibilityInfo CompatOpts) ErrResponse4xx {
 | |
| 	e.compatibilityInfo = compatibilityInfo
 | |
| 	return e
 | |
| }
 | |
| 
 | |
| func (e ErrResponse4xx) Error() string {
 | |
| 	if len(e.message) > 0 {
 | |
| 		compatInfo := e.compatibilityInfo.String()
 | |
| 		if len(compatInfo) > 0 {
 | |
| 			return fmt.Sprintf("%d: %s (%s)", e.statusCode, e.message, compatInfo)
 | |
| 		}
 | |
| 		return fmt.Sprintf("%d: %s", e.statusCode, e.message)
 | |
| 	}
 | |
| 	return fmt.Sprintf("%d", e.statusCode)
 | |
| }
 | |
| 
 | |
| var (
 | |
| 	ErrVersionUnsupportedMsg  = "{{.Public.PluginID}} v{{.Public.Version}} is not supported on your system {{.Public.SysInfo}}"
 | |
| 	ErrVersionUnsupportedBase = errutil.Conflict("plugin.unsupportedVersion").
 | |
| 					MustTemplate(ErrVersionUnsupportedMsg, errutil.WithPublic(ErrVersionUnsupportedMsg))
 | |
| 
 | |
| 	ErrVersionNotFoundMsg  = "{{.Public.PluginID}} v{{.Public.Version}} either does not exist or is not supported on your system {{.Public.SysInfo}}"
 | |
| 	ErrVersionNotFoundBase = errutil.NotFound("plugin.versionNotFound").
 | |
| 				MustTemplate(ErrVersionNotFoundMsg, errutil.WithPublic(ErrVersionNotFoundMsg))
 | |
| 
 | |
| 	ErrArcNotFoundMsg  = "{{.Public.PluginID}} is not compatible with your system architecture: {{.Public.SysInfo}}"
 | |
| 	ErrArcNotFoundBase = errutil.NotFound("plugin.archNotFound").
 | |
| 				MustTemplate(ErrArcNotFoundMsg, errutil.WithPublic(ErrArcNotFoundMsg))
 | |
| 
 | |
| 	ErrChecksumMismatchMsg  = "expected SHA256 checksum does not match the downloaded archive ({{.Public.ArchiveURL}}) - please contact security@grafana.com"
 | |
| 	ErrChecksumMismatchBase = errutil.UnprocessableEntity("plugin.checksumMismatch").
 | |
| 				MustTemplate(ErrChecksumMismatchMsg, errutil.WithPublic(ErrChecksumMismatchMsg))
 | |
| 
 | |
| 	ErrCorePluginMsg  = "plugin {{.Public.PluginID}} is a core plugin and cannot be installed separately"
 | |
| 	ErrCorePluginBase = errutil.Forbidden("plugin.forbiddenCorePluginInstall").
 | |
| 				MustTemplate(ErrCorePluginMsg, errutil.WithPublic(ErrCorePluginMsg))
 | |
| 
 | |
| 	ErrNotCompatibledMsg = "{{.Public.PluginID}} is not compatible with your Grafana version: {{.Public.GrafanaVersion}}"
 | |
| 	ErrNotCompatibleBase = errutil.NotFound("plugin.grafanaVersionNotCompatible").
 | |
| 				MustTemplate(ErrNotCompatibledMsg, errutil.WithPublic(ErrNotCompatibledMsg))
 | |
| )
 | |
| 
 | |
| func ErrVersionUnsupported(pluginID, requestedVersion, systemInfo string) error {
 | |
| 	return ErrVersionUnsupportedBase.Build(errutil.TemplateData{Public: map[string]any{"PluginID": pluginID, "Version": requestedVersion, "SysInfo": systemInfo}})
 | |
| }
 | |
| 
 | |
| func ErrVersionNotFound(pluginID, requestedVersion, systemInfo string) error {
 | |
| 	return ErrVersionNotFoundBase.Build(errutil.TemplateData{Public: map[string]any{"PluginID": pluginID, "Version": requestedVersion, "SysInfo": systemInfo}})
 | |
| }
 | |
| 
 | |
| func ErrArcNotFound(pluginID, systemInfo string) error {
 | |
| 	return ErrArcNotFoundBase.Build(errutil.TemplateData{Public: map[string]any{"PluginID": pluginID, "SysInfo": systemInfo}})
 | |
| }
 | |
| 
 | |
| func ErrChecksumMismatch(archiveURL string) error {
 | |
| 	return ErrChecksumMismatchBase.Build(errutil.TemplateData{Public: map[string]any{"ArchiveURL": archiveURL}})
 | |
| }
 | |
| 
 | |
| func ErrCorePlugin(pluginID string) error {
 | |
| 	return ErrCorePluginBase.Build(errutil.TemplateData{Public: map[string]any{"PluginID": pluginID}})
 | |
| }
 | |
| 
 | |
| func ErrNoCompatibleVersions(pluginID, grafanaVersion string) error {
 | |
| 	return ErrNotCompatibleBase.Build(errutil.TemplateData{Public: map[string]any{"PluginID": pluginID, "GrafanaVersion": grafanaVersion}})
 | |
| }
 |