+ +
+
Торренты:
+ ++ + +
diff --git a/src/server/web/api/route.go b/src/server/web/api/route.go index b8e382d..68a93c8 100644 --- a/src/server/web/api/route.go +++ b/src/server/web/api/route.go @@ -2,7 +2,6 @@ package api import ( "github.com/gin-gonic/gin" - "server/torr" "server/version" ) @@ -10,13 +9,7 @@ type requestI struct { Action string `json:"action,omitempty"` } -type responseI struct { -} - -var bts *torr.BTServer - -func SetupRouteApi(route *gin.Engine, serv *torr.BTServer) { - bts = serv +func SetupRoute(route *gin.Engine) { route.GET("/echo", echo) route.POST("/settings", settings) diff --git a/src/server/web/api/settings.go b/src/server/web/api/settings.go index 649a88c..f257da0 100644 --- a/src/server/web/api/settings.go +++ b/src/server/web/api/settings.go @@ -5,13 +5,13 @@ import ( "github.com/gin-gonic/gin" "github.com/pkg/errors" - settings2 "server/settings" + sets "server/settings" ) //Action: get, set type setsReqJS struct { requestI - Sets *settings2.BTSets `json:"sets,omitempty"` + Sets *sets.BTSets `json:"sets,omitempty"` } func settings(c *gin.Context) { @@ -23,11 +23,11 @@ func settings(c *gin.Context) { } if req.Action == "get" { - c.JSON(200, settings2.BTsets) + c.JSON(200, sets.BTsets) return } if req.Action == "set" { - settings2.SetBTSets(req.Sets) + sets.SetBTSets(req.Sets) c.Status(200) return } diff --git a/src/server/web/pages/mainPage.go b/src/server/web/pages/mainPage.go new file mode 100644 index 0000000..fddf8b8 --- /dev/null +++ b/src/server/web/pages/mainPage.go @@ -0,0 +1,9 @@ +package pages + +import ( + "github.com/gin-gonic/gin" +) + +func mainPage(c *gin.Context) { + c.HTML(200, "mainPage", nil) +} diff --git a/src/server/web/pages/route.go b/src/server/web/pages/route.go new file mode 100644 index 0000000..fe18e11 --- /dev/null +++ b/src/server/web/pages/route.go @@ -0,0 +1,15 @@ +package pages + +import ( + "github.com/gin-gonic/gin" + "server/web/pages/template" +) + +var temp *template.Template + +func SetupRoute(route *gin.Engine) { + temp = template.InitTemplate(route) + + route.GET("/", mainPage) + +} diff --git a/src/server/web/pages/template/apijs.go b/src/server/web/pages/template/apijs.go new file mode 100644 index 0000000..77cdfc7 --- /dev/null +++ b/src/server/web/pages/template/apijs.go @@ -0,0 +1,49 @@ +package template + +const apijs = ` +// Torrents +function addTorrent(link, title, poster, save, done, fail){ + torrent("add",link,null,title,poster,save,done,fail); +} + +function getTorrent(hash, done, fail){ + torrent("get",null,hash,null,null,null,done,fail); +} + +function remTorrent(hash, done, fail){ + torrent("rem",null,hash,null,null,null,done,fail); +} + +function listTorrent(done, fail){ + torrent("list",null,null,null,null,null,done,fail); +} + +function dropTorrent(hash, done, fail){ + torrent("drop",null,hash,null,null,null,done,fail); +} + +function torrent(action, link, hash, title, poster, save, done, fail){ + var req = JSON.stringify({ action:action, link: link, title: title, poster: poster, save_to_db: save}); + $.post('/torrents',req) + .done(function( data ) { + if (done) + done(data); + }) + .fail(function( data ) { + if (fail) + fail(data); + }); +} +// + +// Settings + +// + +function humanizeSize(size) { + if (typeof size == 'undefined' || size == 0) + return ""; + var i = Math.floor( Math.log(size) / Math.log(1024) ); + return ( size / Math.pow(1024, i) ).toFixed(2) * 1 + ' ' + ['B', 'kB', 'MB', 'GB', 'TB'][i]; +} +` diff --git a/src/server/web/pages/template/favicon.go b/src/server/web/pages/template/favicon.go new file mode 100644 index 0000000..8cd4393 --- /dev/null +++ b/src/server/web/pages/template/favicon.go @@ -0,0 +1,3 @@ +package template + +const faviconB64 = "data:image/png;base64,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" diff --git a/src/server/web/pages/template/header.go b/src/server/web/pages/template/header.go new file mode 100644 index 0000000..c88333e --- /dev/null +++ b/src/server/web/pages/template/header.go @@ -0,0 +1,24 @@ +package template + +import ( + "server/version" +) + +const header = ` +
+ + + + + + + + + + + + + +