mirror of https://github.com/portainer/portainer
				
				
				
			fix(api): fix issues with old error declaration
							parent
							
								
									db4a5292be
								
							
						
					
					
						commit
						08095913a6
					
				|  | @ -85,19 +85,19 @@ type customTemplateFromFileContentPayload struct { | |||
| 
 | ||||
| func (payload *customTemplateFromFileContentPayload) Validate(r *http.Request) error { | ||||
| 	if govalidator.IsNull(payload.Title) { | ||||
| 		return portainer.Error("Invalid custom template title") | ||||
| 		return errors.New("Invalid custom template title") | ||||
| 	} | ||||
| 	if govalidator.IsNull(payload.Description) { | ||||
| 		return portainer.Error("Invalid custom template description") | ||||
| 		return errors.New("Invalid custom template description") | ||||
| 	} | ||||
| 	if govalidator.IsNull(payload.FileContent) { | ||||
| 		return portainer.Error("Invalid file content") | ||||
| 		return errors.New("Invalid file content") | ||||
| 	} | ||||
| 	if payload.Platform != portainer.CustomTemplatePlatformLinux && payload.Platform != portainer.CustomTemplatePlatformWindows { | ||||
| 		return portainer.Error("Invalid custom template platform") | ||||
| 		return errors.New("Invalid custom template platform") | ||||
| 	} | ||||
| 	if payload.Type != portainer.DockerSwarmStack && payload.Type != portainer.DockerComposeStack { | ||||
| 		return portainer.Error("Invalid custom template type") | ||||
| 		return errors.New("Invalid custom template type") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | @ -148,25 +148,25 @@ type customTemplateFromGitRepositoryPayload struct { | |||
| 
 | ||||
| func (payload *customTemplateFromGitRepositoryPayload) Validate(r *http.Request) error { | ||||
| 	if govalidator.IsNull(payload.Title) { | ||||
| 		return portainer.Error("Invalid custom template title") | ||||
| 		return errors.New("Invalid custom template title") | ||||
| 	} | ||||
| 	if govalidator.IsNull(payload.Description) { | ||||
| 		return portainer.Error("Invalid custom template description") | ||||
| 		return errors.New("Invalid custom template description") | ||||
| 	} | ||||
| 	if govalidator.IsNull(payload.RepositoryURL) || !govalidator.IsURL(payload.RepositoryURL) { | ||||
| 		return portainer.Error("Invalid repository URL. Must correspond to a valid URL format") | ||||
| 		return errors.New("Invalid repository URL. Must correspond to a valid URL format") | ||||
| 	} | ||||
| 	if payload.RepositoryAuthentication && (govalidator.IsNull(payload.RepositoryUsername) || govalidator.IsNull(payload.RepositoryPassword)) { | ||||
| 		return portainer.Error("Invalid repository credentials. Username and password must be specified when authentication is enabled") | ||||
| 		return errors.New("Invalid repository credentials. Username and password must be specified when authentication is enabled") | ||||
| 	} | ||||
| 	if govalidator.IsNull(payload.ComposeFilePathInRepository) { | ||||
| 		payload.ComposeFilePathInRepository = filesystem.ComposeFileDefaultName | ||||
| 	} | ||||
| 	if payload.Platform != portainer.CustomTemplatePlatformLinux && payload.Platform != portainer.CustomTemplatePlatformWindows { | ||||
| 		return portainer.Error("Invalid custom template platform") | ||||
| 		return errors.New("Invalid custom template platform") | ||||
| 	} | ||||
| 	if payload.Type != portainer.DockerSwarmStack && payload.Type != portainer.DockerComposeStack { | ||||
| 		return portainer.Error("Invalid custom template type") | ||||
| 		return errors.New("Invalid custom template type") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | @ -223,13 +223,13 @@ type customTemplateFromFileUploadPayload struct { | |||
| func (payload *customTemplateFromFileUploadPayload) Validate(r *http.Request) error { | ||||
| 	title, err := request.RetrieveMultiPartFormValue(r, "Title", false) | ||||
| 	if err != nil { | ||||
| 		return portainer.Error("Invalid custom template title") | ||||
| 		return errors.New("Invalid custom template title") | ||||
| 	} | ||||
| 	payload.Title = title | ||||
| 
 | ||||
| 	description, err := request.RetrieveMultiPartFormValue(r, "Description", false) | ||||
| 	if err != nil { | ||||
| 		return portainer.Error("Invalid custom template description") | ||||
| 		return errors.New("Invalid custom template description") | ||||
| 	} | ||||
| 
 | ||||
| 	payload.Description = description | ||||
|  | @ -240,20 +240,20 @@ func (payload *customTemplateFromFileUploadPayload) Validate(r *http.Request) er | |||
| 	platform, _ := request.RetrieveNumericMultiPartFormValue(r, "Platform", true) | ||||
| 	templatePlatform := portainer.CustomTemplatePlatform(platform) | ||||
| 	if templatePlatform != portainer.CustomTemplatePlatformLinux && templatePlatform != portainer.CustomTemplatePlatformWindows { | ||||
| 		return portainer.Error("Invalid custom template platform") | ||||
| 		return errors.New("Invalid custom template platform") | ||||
| 	} | ||||
| 	payload.Platform = templatePlatform | ||||
| 
 | ||||
| 	typeNumeral, _ := request.RetrieveNumericMultiPartFormValue(r, "Type", true) | ||||
| 	templateType := portainer.StackType(typeNumeral) | ||||
| 	if templateType != portainer.DockerComposeStack && templateType != portainer.DockerSwarmStack { | ||||
| 		return portainer.Error("Invalid custom template type") | ||||
| 		return errors.New("Invalid custom template type") | ||||
| 	} | ||||
| 	payload.Type = templateType | ||||
| 
 | ||||
| 	composeFileContent, _, err := request.RetrieveMultiPartFormFile(r, "file") | ||||
| 	if err != nil { | ||||
| 		return portainer.Error("Invalid Compose file. Ensure that the Compose file is uploaded correctly") | ||||
| 		return errors.New("Invalid Compose file. Ensure that the Compose file is uploaded correctly") | ||||
| 	} | ||||
| 	payload.FileContent = composeFileContent | ||||
| 
 | ||||
|  |  | |||
|  | @ -8,6 +8,8 @@ import ( | |||
| 	"github.com/portainer/libhttp/request" | ||||
| 	"github.com/portainer/libhttp/response" | ||||
| 	portainer "github.com/portainer/portainer/api" | ||||
| 	bolterrors "github.com/portainer/portainer/api/bolt/errors" | ||||
| 	httperrors "github.com/portainer/portainer/api/http/errors" | ||||
| 	"github.com/portainer/portainer/api/http/security" | ||||
| ) | ||||
| 
 | ||||
|  | @ -23,7 +25,7 @@ func (handler *Handler) customTemplateDelete(w http.ResponseWriter, r *http.Requ | |||
| 	} | ||||
| 
 | ||||
| 	customTemplate, err := handler.DataStore.CustomTemplate().CustomTemplate(portainer.CustomTemplateID(customTemplateID)) | ||||
| 	if err == portainer.ErrObjectNotFound { | ||||
| 	if err == bolterrors.ErrObjectNotFound { | ||||
| 		return &httperror.HandlerError{http.StatusNotFound, "Unable to find a custom template with the specified identifier inside the database", err} | ||||
| 	} else if err != nil { | ||||
| 		return &httperror.HandlerError{http.StatusInternalServerError, "Unable to find a custom template with the specified identifier inside the database", err} | ||||
|  | @ -36,7 +38,7 @@ func (handler *Handler) customTemplateDelete(w http.ResponseWriter, r *http.Requ | |||
| 
 | ||||
| 	access := userCanEditTemplate(customTemplate, securityContext) | ||||
| 	if !access { | ||||
| 		return &httperror.HandlerError{http.StatusForbidden, "Access denied to resource", portainer.ErrResourceAccessDenied} | ||||
| 		return &httperror.HandlerError{http.StatusForbidden, "Access denied to resource", httperrors.ErrResourceAccessDenied} | ||||
| 	} | ||||
| 
 | ||||
| 	err = handler.DataStore.CustomTemplate().DeleteCustomTemplate(portainer.CustomTemplateID(customTemplateID)) | ||||
|  |  | |||
|  | @ -8,6 +8,7 @@ import ( | |||
| 	"github.com/portainer/libhttp/request" | ||||
| 	"github.com/portainer/libhttp/response" | ||||
| 	"github.com/portainer/portainer/api" | ||||
| 	bolterrors "github.com/portainer/portainer/api/bolt/errors" | ||||
| ) | ||||
| 
 | ||||
| type fileResponse struct { | ||||
|  | @ -22,7 +23,7 @@ func (handler *Handler) customTemplateFile(w http.ResponseWriter, r *http.Reques | |||
| 	} | ||||
| 
 | ||||
| 	customTemplate, err := handler.DataStore.CustomTemplate().CustomTemplate(portainer.CustomTemplateID(customTemplateID)) | ||||
| 	if err == portainer.ErrObjectNotFound { | ||||
| 	if err == bolterrors.ErrObjectNotFound { | ||||
| 		return &httperror.HandlerError{http.StatusNotFound, "Unable to find a custom template with the specified identifier inside the database", err} | ||||
| 	} else if err != nil { | ||||
| 		return &httperror.HandlerError{http.StatusInternalServerError, "Unable to find a custom template with the specified identifier inside the database", err} | ||||
|  |  | |||
|  | @ -8,6 +8,8 @@ import ( | |||
| 	"github.com/portainer/libhttp/request" | ||||
| 	"github.com/portainer/libhttp/response" | ||||
| 	"github.com/portainer/portainer/api" | ||||
| 	bolterrors "github.com/portainer/portainer/api/bolt/errors" | ||||
| 	httperrors "github.com/portainer/portainer/api/http/errors" | ||||
| 	"github.com/portainer/portainer/api/http/security" | ||||
| ) | ||||
| 
 | ||||
|  | @ -18,7 +20,7 @@ func (handler *Handler) customTemplateInspect(w http.ResponseWriter, r *http.Req | |||
| 	} | ||||
| 
 | ||||
| 	customTemplate, err := handler.DataStore.CustomTemplate().CustomTemplate(portainer.CustomTemplateID(customTemplateID)) | ||||
| 	if err == portainer.ErrObjectNotFound { | ||||
| 	if err == bolterrors.ErrObjectNotFound { | ||||
| 		return &httperror.HandlerError{http.StatusNotFound, "Unable to find a custom template with the specified identifier inside the database", err} | ||||
| 	} else if err != nil { | ||||
| 		return &httperror.HandlerError{http.StatusInternalServerError, "Unable to find a custom template with the specified identifier inside the database", err} | ||||
|  | @ -36,7 +38,7 @@ func (handler *Handler) customTemplateInspect(w http.ResponseWriter, r *http.Req | |||
| 
 | ||||
| 	access := userCanEditTemplate(customTemplate, securityContext) | ||||
| 	if !access { | ||||
| 		return &httperror.HandlerError{http.StatusForbidden, "Access denied to resource", portainer.ErrResourceAccessDenied} | ||||
| 		return &httperror.HandlerError{http.StatusForbidden, "Access denied to resource", httperrors.ErrResourceAccessDenied} | ||||
| 	} | ||||
| 
 | ||||
| 	if resourceControl != nil { | ||||
|  |  | |||
|  | @ -1,14 +1,18 @@ | |||
| package customtemplates | ||||
| 
 | ||||
| import ( | ||||
| 	"errors" | ||||
| 	"net/http" | ||||
| 	"strconv" | ||||
| 
 | ||||
| 	bolterrors "github.com/portainer/portainer/api/bolt/errors" | ||||
| 
 | ||||
| 	"github.com/asaskevich/govalidator" | ||||
| 	httperror "github.com/portainer/libhttp/error" | ||||
| 	"github.com/portainer/libhttp/request" | ||||
| 	"github.com/portainer/libhttp/response" | ||||
| 	portainer "github.com/portainer/portainer/api" | ||||
| 	httperrors "github.com/portainer/portainer/api/http/errors" | ||||
| 	"github.com/portainer/portainer/api/http/security" | ||||
| ) | ||||
| 
 | ||||
|  | @ -24,19 +28,19 @@ type customTemplateUpdatePayload struct { | |||
| 
 | ||||
| func (payload *customTemplateUpdatePayload) Validate(r *http.Request) error { | ||||
| 	if govalidator.IsNull(payload.Title) { | ||||
| 		return portainer.Error("Invalid custom template title") | ||||
| 		return errors.New("Invalid custom template title") | ||||
| 	} | ||||
| 	if govalidator.IsNull(payload.FileContent) { | ||||
| 		return portainer.Error("Invalid file content") | ||||
| 		return errors.New("Invalid file content") | ||||
| 	} | ||||
| 	if payload.Platform != portainer.CustomTemplatePlatformLinux && payload.Platform != portainer.CustomTemplatePlatformWindows { | ||||
| 		return portainer.Error("Invalid custom template platform") | ||||
| 		return errors.New("Invalid custom template platform") | ||||
| 	} | ||||
| 	if payload.Type != portainer.DockerComposeStack && payload.Type != portainer.DockerSwarmStack { | ||||
| 		return portainer.Error("Invalid custom template type") | ||||
| 		return errors.New("Invalid custom template type") | ||||
| 	} | ||||
| 	if govalidator.IsNull(payload.Description) { | ||||
| 		return portainer.Error("Invalid custom template description") | ||||
| 		return errors.New("Invalid custom template description") | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | @ -54,7 +58,7 @@ func (handler *Handler) customTemplateUpdate(w http.ResponseWriter, r *http.Requ | |||
| 	} | ||||
| 
 | ||||
| 	customTemplate, err := handler.DataStore.CustomTemplate().CustomTemplate(portainer.CustomTemplateID(customTemplateID)) | ||||
| 	if err == portainer.ErrObjectNotFound { | ||||
| 	if err == bolterrors.ErrObjectNotFound { | ||||
| 		return &httperror.HandlerError{http.StatusNotFound, "Unable to find a custom template with the specified identifier inside the database", err} | ||||
| 	} else if err != nil { | ||||
| 		return &httperror.HandlerError{http.StatusInternalServerError, "Unable to find a custom template with the specified identifier inside the database", err} | ||||
|  | @ -67,7 +71,7 @@ func (handler *Handler) customTemplateUpdate(w http.ResponseWriter, r *http.Requ | |||
| 
 | ||||
| 	access := userCanEditTemplate(customTemplate, securityContext) | ||||
| 	if !access { | ||||
| 		return &httperror.HandlerError{http.StatusForbidden, "Access denied to resource", portainer.ErrResourceAccessDenied} | ||||
| 		return &httperror.HandlerError{http.StatusForbidden, "Access denied to resource", httperrors.ErrResourceAccessDenied} | ||||
| 	} | ||||
| 
 | ||||
| 	templateFolder := strconv.Itoa(customTemplateID) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Anthony Lapenna
						Anthony Lapenna