From 96ee1fd8b876af33254ac49beb0cd7133ae8653e Mon Sep 17 00:00:00 2001 From: Sergey Petrov Date: Thu, 20 Feb 2025 18:01:34 +0500 Subject: [PATCH] create structure for future server --- reader/server/cmd/main.go | 5 ++++ reader/server/go.mod | 3 +++ reader/server/pkg/handlers/handler.go | 33 +++++++++++++++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 reader/server/cmd/main.go create mode 100644 reader/server/go.mod create mode 100644 reader/server/pkg/handlers/handler.go diff --git a/reader/server/cmd/main.go b/reader/server/cmd/main.go new file mode 100644 index 0000000..7905807 --- /dev/null +++ b/reader/server/cmd/main.go @@ -0,0 +1,5 @@ +package main + +func main() { + +} diff --git a/reader/server/go.mod b/reader/server/go.mod new file mode 100644 index 0000000..e45b76e --- /dev/null +++ b/reader/server/go.mod @@ -0,0 +1,3 @@ +module server + +go 1.23 diff --git a/reader/server/pkg/handlers/handler.go b/reader/server/pkg/handlers/handler.go new file mode 100644 index 0000000..5502f4b --- /dev/null +++ b/reader/server/pkg/handlers/handler.go @@ -0,0 +1,33 @@ +package main + +import ( + "log" + "net/http" + "os" +) + +func serveVideo(w http.ResponseWriter, r *http.Request) { + filePath := "files/111.mp4" + + // Открытие запрашиваемого файла + file, err := os.Open(filePath) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + log.Fatalln("Ошибка открытия файла: ", err) + return + } + defer func() { + err = file.Close() + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + log.Fatalln("Ошибка закрытия файла: ", err) + return + } + }() + + w.Header().Set("Content-Type", "video/mp4") + // Разрешаем частичную загрузку (поддержка перемотки) + w.Header().Set("Accept-Ranges", "bytes") + + http.ServeFile(w, r, filePath) +}