48 lines
1.5 KiB
Go
48 lines
1.5 KiB
Go
package api
|
|
|
|
import (
|
|
"bufio"
|
|
"encoding/json"
|
|
"net/http"
|
|
"os"
|
|
"path/filepath"
|
|
)
|
|
|
|
// handleFiledate обрабатывает HTTP-запрос для получения даты файла (версии)
|
|
func FileDate(w http.ResponseWriter, r *http.Request) {
|
|
var MOUNT_POINT = os.Getenv("MOUNT_POINT")
|
|
// Получаем параметр "file" из строки запроса
|
|
filename := r.URL.Query().Get("file")
|
|
if filename == "" {
|
|
http.Error(w, `{"error":"Missing file parameter"}`, http.StatusBadRequest)
|
|
return
|
|
}
|
|
|
|
// Формируем путь к файлу версии: <mount_point>/<filename>.version
|
|
versionPath := filepath.Join(MOUNT_POINT, filename+".version")
|
|
|
|
// Пытаемся прочитать первую строку из файла версии
|
|
dateStr := ""
|
|
f, err := os.Open(versionPath)
|
|
if err == nil {
|
|
defer f.Close()
|
|
scanner := bufio.NewScanner(f)
|
|
if scanner.Scan() {
|
|
dateStr = scanner.Text() // считываем строку без символа новой строки
|
|
}
|
|
// Ошибки сканера игнорируем (как в C)
|
|
}
|
|
// Если файл не существует или другая ошибка — оставляем dateStr пустой
|
|
|
|
// Формируем JSON-ответ
|
|
response := map[string]interface{}{
|
|
"status": "success",
|
|
"date": dateStr,
|
|
"filename": filename,
|
|
}
|
|
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.WriteHeader(http.StatusOK)
|
|
json.NewEncoder(w).Encode(response)
|
|
}
|