diff --git a/pkg/modules/migration/errors.go b/pkg/modules/migration/errors.go new file mode 100644 index 000000000..06b7a4112 --- /dev/null +++ b/pkg/modules/migration/errors.go @@ -0,0 +1,42 @@ +// Vikunja is a to-do list application to facilitate your life. +// Copyright 2018-present Vikunja and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public Licensee as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public Licensee for more details. +// +// You should have received a copy of the GNU Affero General Public Licensee +// along with this program. If not, see . + +package migration + +import ( + "net/http" + + "code.vikunja.io/api/pkg/web" +) + +// ErrNotAZipFile represents a "ErrNotAZipFile" kind of error. +type ErrNotAZipFile struct{} + +func (err *ErrNotAZipFile) Error() string { + return "The provided file is not a valid zip file" +} + +// ErrCodeNotAZipFile holds the unique world-error code of this error +const ErrCodeNotAZipFile = 14001 + +// HTTPError holds the http error description +func (err *ErrNotAZipFile) HTTPError() web.HTTPError { + return web.HTTPError{ + HTTPCode: http.StatusBadRequest, + Code: ErrCodeNotAZipFile, + Message: "The provided file is not a valid zip file.", + } +} diff --git a/pkg/modules/migration/vikunja-file/vikunja.go b/pkg/modules/migration/vikunja-file/vikunja.go index d05be1671..e64206bcf 100644 --- a/pkg/modules/migration/vikunja-file/vikunja.go +++ b/pkg/modules/migration/vikunja-file/vikunja.go @@ -67,6 +67,9 @@ func (v *FileMigrator) Name() string { func (v *FileMigrator) Migrate(user *user.User, file io.ReaderAt, size int64) error { r, err := zip.NewReader(file, size) if err != nil { + if err.Error() == "zip: not a valid zip file" { + return &migration.ErrNotAZipFile{} + } return fmt.Errorf("could not open import file: %w", err) }