mirror of
https://github.com/Ernous/TorrServerJellyfin.git
synced 2025-12-19 21:46:11 +05:00
* Initial version - Add OpenAPI documentation generator - Update README.md to remove endpoint documentations * Adds new endpoints - Fixes build with swag - Adds new endpoints * Adds more endpoints documentation - Also removes swag from Dockerfile and build script * Finally adds all endpoints documentation * Initial version - Add OpenAPI documentation generator - Update README.md to remove endpoint documentations * Adds new endpoints - Fixes build with swag - Adds new endpoints * Adds more endpoints documentation - Also removes swag from Dockerfile and build script * Finally adds all endpoints documentation * Update README (#1) * Update README I completely redid the `README.md`. Now it's much easier to read and understand. --------- Co-authored-by: cocool97 <34218602+cocool97@users.noreply.github.com> * Improves documentation * Delete server/config.db * Update README.md * Update README.md * fix download in api docs * add api docs to web --------- Co-authored-by: Shadeov <144587546+shadeov@users.noreply.github.com> Co-authored-by: nikk gitanes <tsynik@gmail.com>
65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
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
|
|
}
|
|
|
|
// download godoc
|
|
//
|
|
// @Summary Generates test file of given size
|
|
// @Description Download the test file of given size (for speed testing purpose).
|
|
//
|
|
// @Tags API
|
|
//
|
|
// @Param size path string true "Test file size"
|
|
//
|
|
// @Produce application/octet-stream
|
|
// @Success 200 {file} file
|
|
// @Router /download/{size} [get]
|
|
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)))
|
|
}
|