code refactoring
This commit is contained in:
@@ -9,13 +9,19 @@ type Stack[T any] struct {
|
|||||||
count int
|
count int
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Stack[T]) Push(n *Node[T]) {
|
func NewStack[T any]() *Stack[T] {
|
||||||
|
return &Stack[T]{
|
||||||
|
Nodes: make([]*Node[T], 10),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Stack[T]) Push(val T) {
|
||||||
if s.count >= len(s.Nodes) {
|
if s.count >= len(s.Nodes) {
|
||||||
Nodes := make([]*Node[T], len(s.Nodes)*2)
|
Nodes := make([]*Node[T], len(s.Nodes)*2)
|
||||||
copy(Nodes, s.Nodes)
|
copy(Nodes, s.Nodes)
|
||||||
s.Nodes = Nodes
|
s.Nodes = Nodes
|
||||||
}
|
}
|
||||||
s.Nodes[s.count] = n
|
s.Nodes[s.count] = &Node[T]{Value: val}
|
||||||
s.count++
|
s.count++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package rest
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"encoding/json"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@@ -11,6 +10,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/go-chi/chi/v5"
|
"github.com/go-chi/chi/v5"
|
||||||
|
"github.com/goccy/go-json"
|
||||||
"github.com/golang-jwt/jwt/v5"
|
"github.com/golang-jwt/jwt/v5"
|
||||||
"github.com/marcopeocchi/yt-dlp-web-ui/server/config"
|
"github.com/marcopeocchi/yt-dlp-web-ui/server/config"
|
||||||
"github.com/marcopeocchi/yt-dlp-web-ui/server/utils"
|
"github.com/marcopeocchi/yt-dlp-web-ui/server/utils"
|
||||||
|
|||||||
@@ -28,15 +28,11 @@ func DirectoryTree() (*[]string, error) {
|
|||||||
|
|
||||||
rootPath := config.Instance().GetConfig().DownloadPath
|
rootPath := config.Instance().GetConfig().DownloadPath
|
||||||
|
|
||||||
stack := internal.Stack[Node]{
|
stack := internal.NewStack[Node]()
|
||||||
Nodes: make([]*internal.Node[Node], 5),
|
|
||||||
}
|
|
||||||
flattened := make([]string, 0)
|
flattened := make([]string, 0)
|
||||||
|
|
||||||
root := Node{path: rootPath}
|
stack.Push(Node{path: rootPath})
|
||||||
stack.Push(&internal.Node[Node]{
|
|
||||||
Value: root,
|
|
||||||
})
|
|
||||||
flattened = append(flattened, rootPath)
|
flattened = append(flattened, rootPath)
|
||||||
|
|
||||||
for stack.IsNotEmpty() {
|
for stack.IsNotEmpty() {
|
||||||
@@ -51,9 +47,7 @@ func DirectoryTree() (*[]string, error) {
|
|||||||
|
|
||||||
if entry.IsDir() {
|
if entry.IsDir() {
|
||||||
current.children = append(current.children, childNode)
|
current.children = append(current.children, childNode)
|
||||||
stack.Push(&internal.Node[Node]{
|
stack.Push(childNode)
|
||||||
Value: childNode,
|
|
||||||
})
|
|
||||||
flattened = append(flattened, childNode.path)
|
flattened = append(flattened, childNode.path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
package updater
|
|
||||||
|
|
||||||
import (
|
|
||||||
"io"
|
|
||||||
"log"
|
|
||||||
"net/http"
|
|
||||||
|
|
||||||
"github.com/goccy/go-json"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
gitHubAPILatest = "https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest"
|
|
||||||
gitHubAPIDownload = "https://api.github.com/repos/yt-dlp/yt-dlp/releases/download"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
client = &http.Client{
|
|
||||||
CheckRedirect: http.DefaultClient.CheckRedirect,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func getLatestReleaseTag() (string, error) {
|
|
||||||
res, err := client.Get(gitHubAPILatest)
|
|
||||||
if err != nil {
|
|
||||||
log.Println("Cannot get release tag from GitHub API")
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
defer res.Body.Close()
|
|
||||||
|
|
||||||
body, err := io.ReadAll(res.Body)
|
|
||||||
|
|
||||||
if err != nil {
|
|
||||||
log.Println("Cannot parse response from GitHub API")
|
|
||||||
return "", err
|
|
||||||
}
|
|
||||||
|
|
||||||
tag := ReleaseLatestResponse{}
|
|
||||||
json.Unmarshal(body, &tag)
|
|
||||||
|
|
||||||
return tag.TagName, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func ForceUpdate() {
|
|
||||||
getLatestReleaseTag()
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
package updater
|
|
||||||
|
|
||||||
type ReleaseLatestResponse struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
TagName string `json:"tag_name"`
|
|
||||||
}
|
|
||||||
@@ -6,13 +6,14 @@ import (
|
|||||||
"github.com/marcopeocchi/yt-dlp-web-ui/server/config"
|
"github.com/marcopeocchi/yt-dlp-web-ui/server/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
var path = config.Instance().GetConfig().DownloaderPath
|
|
||||||
|
|
||||||
// Update using the builtin function of yt-dlp
|
// Update using the builtin function of yt-dlp
|
||||||
func UpdateExecutable() error {
|
func UpdateExecutable() error {
|
||||||
cmd := exec.Command(path, "-U")
|
cmd := exec.Command(config.Instance().GetConfig().DownloaderPath, "-U")
|
||||||
cmd.Start()
|
|
||||||
|
|
||||||
err := cmd.Wait()
|
err := cmd.Start()
|
||||||
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return cmd.Wait()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user