From d60d05f2d86400faf3303e655c46c5b8d77879c4 Mon Sep 17 00:00:00 2001 From: George Goldberg Date: Thu, 16 Feb 2017 14:49:01 +0000 Subject: PLT-5521: Mandatory version in line 1 of bulk import. (#5400) --- app/import.go | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'app/import.go') diff --git a/app/import.go b/app/import.go index 1241048d3..10a915b2a 100644 --- a/app/import.go +++ b/app/import.go @@ -25,6 +25,7 @@ type LineImportData struct { Team *TeamImportData `json:"team"` Channel *ChannelImportData `json:"channel"` User *UserImportData `json:"user"` + Version *int `json:"version"` } type TeamImportData struct { @@ -101,7 +102,16 @@ func BulkImport(fileReader io.Reader, dryRun bool) (*model.AppError, int) { if err := decoder.Decode(&line); err != nil { return model.NewLocAppError("BulkImport", "app.import.bulk_import.json_decode.error", nil, err.Error()), lineNumber } else { - if err := ImportLine(line, dryRun); err != nil { + if lineNumber == 1 { + importDataFileVersion, apperr := processImportDataFileVersionLine(line) + if apperr != nil { + return apperr, lineNumber + } + + if importDataFileVersion != 1 { + return model.NewAppError("BulkImport", "app.import.bulk_import.unsupported_version.error", nil, "", http.StatusBadRequest), lineNumber + } + } else if err := ImportLine(line, dryRun); err != nil { return err, lineNumber } } @@ -114,6 +124,14 @@ func BulkImport(fileReader io.Reader, dryRun bool) (*model.AppError, int) { return nil, 0 } +func processImportDataFileVersionLine(line LineImportData) (int, *model.AppError) { + if line.Type != "version" || line.Version == nil { + return -1, model.NewAppError("BulkImport", "app.import.process_import_data_file_version_line.invalid_version.error", nil, "", http.StatusBadRequest) + } + + return *line.Version, nil +} + func ImportLine(line LineImportData, dryRun bool) *model.AppError { switch { case line.Type == "team": -- cgit v1.2.3-1-g7c22