From 3414f72cdc01e14d095501a1652bc7b9d6a15778 Mon Sep 17 00:00:00 2001 From: YouROK <8yourok8@mail.ru> Date: Thu, 30 Dec 2021 20:17:57 +0300 Subject: [PATCH] add download test fake file --- server/web/api/download.go | 52 ++++++++++++++++++++++++++++++++++++++ server/web/api/route.go | 2 ++ 2 files changed, 54 insertions(+) create mode 100644 server/web/api/download.go diff --git a/server/web/api/download.go b/server/web/api/download.go new file mode 100644 index 0000000..77735e8 --- /dev/null +++ b/server/web/api/download.go @@ -0,0 +1,52 @@ +package api + +import ( + "fmt" + "io" + "net/http" + "strconv" + "time" + + "github.com/gin-gonic/gin" +) + +type fileReader struct { + pos int64 + size int64 + io.ReadSeeker +} + +func newFR(size int64) *fileReader { + return &fileReader{ + pos: 0, + size: size, + } +} + +func (f *fileReader) Read(p []byte) (n int, err error) { + f.pos = f.pos + int64(len(p)) + return len(p), nil +} + +func (f *fileReader) Seek(offset int64, whence int) (int64, error) { + switch whence { + case 0: + f.pos = offset + case 1: + f.pos += offset + case 2: + f.pos = f.size + offset + } + return f.pos, nil +} + +func download(c *gin.Context) { + szStr := c.Param("size") + sz, err := strconv.Atoi(szStr) + if err != nil { + c.Error(err) + return + } + + http.ServeContent(c.Writer, c.Request, fmt.Sprintln(szStr)+"mb.bin", time.Now(), newFR(int64(sz*1024*1024))) +} diff --git a/server/web/api/route.go b/server/web/api/route.go index 0e33dd4..9860aa5 100644 --- a/server/web/api/route.go +++ b/server/web/api/route.go @@ -37,6 +37,8 @@ func SetupRoute(route *gin.RouterGroup) { route.GET("/playlistall/all.m3u", allPlayList) route.GET("/playlist", playList) route.GET("/playlist/*fname", playList) + + route.GET("/download/:size", download) } func shutdown(c *gin.Context) {