diff --git a/app/app.go b/app/app.go index c790eb0..3bf9904 100644 --- a/app/app.go +++ b/app/app.go @@ -8,6 +8,7 @@ import ( "log" "net/http" "net/url" + "strconv" "git.atik.me/basicweb/models" ) @@ -15,7 +16,7 @@ import ( type App struct { LabsFS fs.FS WebFS fs.FS - Labs map[string]models.Lab + Labs map[int]models.Lab } func New(labsFS fs.FS, webFS fs.FS) App { @@ -50,17 +51,24 @@ func (a *App) LabPageHandler(writer http.ResponseWriter, request *http.Request) return } - number := parsedURL.Query().Get("number") - if number == "" { + strNumber := parsedURL.Query().Get("number") + if strNumber == "" { writer.WriteHeader(http.StatusNotFound) writer.Write([]byte("Не указан номер лабораторной работы!")) return } + number, err := strconv.Atoi(strNumber) + if err != nil { + writer.WriteHeader(http.StatusNotFound) + writer.Write([]byte("Некорректный номер лабораторной работы!")) + return + } + lab, ok := a.Labs[number] if !ok || !lab.Complete { writer.WriteHeader(http.StatusNotFound) - writer.Write([]byte("Лаборатораня работа с номером " + number + " не найдена!")) + writer.Write([]byte("Лаборатораня работа с номером " + strconv.Itoa(number) + " не найдена!")) return } @@ -69,9 +77,9 @@ func (a *App) LabPageHandler(writer http.ResponseWriter, request *http.Request) } } -func getLabsList(labsFS fs.FS) map[string]models.Lab { +func getLabsList(labsFS fs.FS) map[int]models.Lab { - var result = make(map[string]models.Lab) + var result = make(map[int]models.Lab) folders, err := fs.ReadDir(labsFS, "labs") if err != nil { diff --git a/labs/lab1/desc.json b/labs/lab1/desc.json index 430fbc2..4c224d4 100644 --- a/labs/lab1/desc.json +++ b/labs/lab1/desc.json @@ -1,5 +1,5 @@ { - "number": "1", + "number": 1, "task": "Создайте функцию, которая принимает массив чисел arr и число n. Верните true, если сумма любых двух элементов равна заданному числу. В противном случае верните false.", "vars": [ [ diff --git a/labs/lab10/desc.json b/labs/lab10/desc.json index 3dfe449..0c4200c 100644 --- a/labs/lab10/desc.json +++ b/labs/lab10/desc.json @@ -1,5 +1,5 @@ { - "number": "10", + "number": 10, "task": "", "vars": [ [ diff --git a/labs/lab11/desc.json b/labs/lab11/desc.json index d613c5f..2c28b3d 100644 --- a/labs/lab11/desc.json +++ b/labs/lab11/desc.json @@ -1,5 +1,5 @@ { - "number": "11", + "number": 11, "task": "", "vars": [ [ diff --git a/labs/lab12/desc.json b/labs/lab12/desc.json index 8a85acc..7b77ecf 100644 --- a/labs/lab12/desc.json +++ b/labs/lab12/desc.json @@ -1,5 +1,5 @@ { - "number": "12", + "number": 12, "task": "", "vars": [ [ diff --git a/labs/lab13/desc.json b/labs/lab13/desc.json index d365015..909897a 100644 --- a/labs/lab13/desc.json +++ b/labs/lab13/desc.json @@ -1,5 +1,5 @@ { - "number": "13", + "number": 13, "task": "", "vars": [ [ diff --git a/labs/lab14/desc.json b/labs/lab14/desc.json index 40d1361..57e0fb2 100644 --- a/labs/lab14/desc.json +++ b/labs/lab14/desc.json @@ -1,5 +1,5 @@ { - "number": "14", + "number": 14, "task": "", "vars": [ [ diff --git a/labs/lab15/desc.json b/labs/lab15/desc.json index f4790f3..0562948 100644 --- a/labs/lab15/desc.json +++ b/labs/lab15/desc.json @@ -1,5 +1,5 @@ { - "number": "15", + "number": 15, "task": "", "vars": [ [ diff --git a/labs/lab2/desc.json b/labs/lab2/desc.json index 93ef518..7e9cf86 100644 --- a/labs/lab2/desc.json +++ b/labs/lab2/desc.json @@ -1,5 +1,5 @@ { - "number": "2", + "number": 2, "task": "Подсчитайте общее количество массивов внутри данного массива. Т.к. конвертирование строки в многомерный массив, не самая тривиальная задача, то исходный массив задается внутри кода.\narr = [[1, 2, 3, [1, 2, 3]], [[[]]], 3]", "vars": [[]], "complete": true diff --git a/labs/lab3/desc.json b/labs/lab3/desc.json index 1e049e1..4f58e8e 100644 --- a/labs/lab3/desc.json +++ b/labs/lab3/desc.json @@ -1,5 +1,5 @@ { - "number": "3", + "number": 3, "task": "Напишите функцию, которая меняет местами все слова в предложении, начинающиеся с определенной буквы.", "vars": [ [ diff --git a/labs/lab4/desc.json b/labs/lab4/desc.json index 8578620..69cfce5 100644 --- a/labs/lab4/desc.json +++ b/labs/lab4/desc.json @@ -1,5 +1,5 @@ { - "number": "4", + "number": 4, "task": "Создайте функцию, которая принимает число в качестве входных данных и возвращает true, если сумма ее цифр имеет ту же четность, что и все число. В противном случае верните false.", "vars": [ [ diff --git a/labs/lab5/desc.json b/labs/lab5/desc.json index d11fe67..0c7b84b 100644 --- a/labs/lab5/desc.json +++ b/labs/lab5/desc.json @@ -1,5 +1,5 @@ { - "number": "5", + "number": 5, "task": "Повторяющийся квадратный корень из числа - это количество раз, которое необходимо применить к функции извлечения квадратного корня, чтобы число было строго меньше 2. Для заданного целого числа вернуть повторяющийся квадратный корень. Вернуть «недействительно», если оно отрицательное.", "vars": [ [ diff --git a/labs/lab6/desc.json b/labs/lab6/desc.json index 65b8bb7..022258a 100644 --- a/labs/lab6/desc.json +++ b/labs/lab6/desc.json @@ -1,5 +1,5 @@ { - "number": "6", + "number": 6, "task": "", "vars": [ [ diff --git a/labs/lab7/desc.json b/labs/lab7/desc.json index 6265562..045e1ed 100644 --- a/labs/lab7/desc.json +++ b/labs/lab7/desc.json @@ -1,5 +1,5 @@ { - "number": "7", + "number": 7, "task": "", "vars": [ [ diff --git a/labs/lab8/desc.json b/labs/lab8/desc.json index e58131c..c5b9563 100644 --- a/labs/lab8/desc.json +++ b/labs/lab8/desc.json @@ -1,5 +1,5 @@ { - "number": "8", + "number": 8, "task": "", "vars": [ [ diff --git a/labs/lab9/desc.json b/labs/lab9/desc.json index 58f73e6..9ba7c48 100644 --- a/labs/lab9/desc.json +++ b/labs/lab9/desc.json @@ -1,5 +1,5 @@ { - "number": "9", + "number": 9, "task": "", "vars": [ [ diff --git a/models/lab.go b/models/lab.go index f6bd945..b7a7238 100644 --- a/models/lab.go +++ b/models/lab.go @@ -1,7 +1,7 @@ package models type Lab struct { - Number string + Number int Task string Vars [][]Var ScriptPath string