mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 13:36:09 +05:00
add download test fake file
This commit is contained in:
52
server/web/api/download.go
Normal file
52
server/web/api/download.go
Normal file
@@ -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)))
|
||||
}
|
||||
Reference in New Issue
Block a user