Move `TempFileName` to `utils`

This commit is contained in:
Deluan 2024-02-17 18:19:51 -05:00 committed by Deluan Quintão
parent 6eb13c9f79
commit fa72aaa462
4 changed files with 16 additions and 13 deletions

View File

@ -2,14 +2,11 @@ package mpv
import ( import (
"context" "context"
"crypto/rand"
"encoding/hex"
"errors" "errors"
"fmt" "fmt"
"io" "io"
"os" "os"
"os/exec" "os/exec"
"path/filepath"
"strings" "strings"
"sync" "sync"
@ -133,10 +130,3 @@ var (
mpvPath string mpvPath string
mpvErr error mpvErr error
) )
func TempFileName(prefix, suffix string) string {
randBytes := make([]byte, 16)
// we can savely ignore the return value since we're loading into a precreated, fixedsized buffer
_, _ = rand.Read(randBytes)
return filepath.Join(os.TempDir(), prefix+hex.EncodeToString(randBytes)+suffix)
}

View File

@ -13,6 +13,7 @@ import (
"github.com/dexterlb/mpvipc" "github.com/dexterlb/mpvipc"
"github.com/navidrome/navidrome/log" "github.com/navidrome/navidrome/log"
"github.com/navidrome/navidrome/model" "github.com/navidrome/navidrome/model"
"github.com/navidrome/navidrome/utils"
) )
type MpvTrack struct { type MpvTrack struct {
@ -31,7 +32,7 @@ func NewTrack(playbackDoneChannel chan bool, deviceName string, mf model.MediaFi
return nil, err return nil, err
} }
tmpSocketName := TempFileName("mpv-ctrl-", ".socket") tmpSocketName := utils.TempFileName("mpv-ctrl-", ".socket")
args := createMPVCommand(mpvComdTemplate, deviceName, mf.Path, tmpSocketName) args := createMPVCommand(mpvComdTemplate, deviceName, mf.Path, tmpSocketName)
exe, err := start(args) exe, err := start(args)

View File

@ -4,8 +4,8 @@ import (
"io/fs" "io/fs"
"os" "os"
"github.com/navidrome/navidrome/core/playback/mpv"
"github.com/navidrome/navidrome/scanner/metadata" "github.com/navidrome/navidrome/scanner/metadata"
"github.com/navidrome/navidrome/utils"
. "github.com/onsi/ginkgo/v2" . "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega" . "github.com/onsi/gomega"
) )
@ -181,7 +181,7 @@ var _ = Describe("Extractor", func() {
// Only run permission tests if we are not root // Only run permission tests if we are not root
RegularUserContext("when run without root privileges", func() { RegularUserContext("when run without root privileges", func() {
BeforeEach(func() { BeforeEach(func() {
accessForbiddenFile = mpv.TempFileName("access_forbidden", ".mp3") accessForbiddenFile = utils.TempFileName("access_forbidden-", ".mp3")
f, err := os.OpenFile(accessForbiddenFile, os.O_WRONLY|os.O_CREATE, 0222) f, err := os.OpenFile(accessForbiddenFile, os.O_WRONLY|os.O_CREATE, 0222)
Expect(err).ToNot(HaveOccurred()) Expect(err).ToNot(HaveOccurred())

12
utils/files.go Normal file
View File

@ -0,0 +1,12 @@
package utils
import (
"os"
"path/filepath"
"github.com/google/uuid"
)
func TempFileName(prefix, suffix string) string {
return filepath.Join(os.TempDir(), prefix+uuid.NewString()+suffix)
}