Skip to content

Commit 10cb8e0

Browse files
committed
refactor: rename songs* to files* (explorer)
1 parent 481278a commit 10cb8e0

File tree

11 files changed

+83
-81
lines changed

11 files changed

+83
-81
lines changed

infrastructure/appConfig/appConfig.go

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,15 @@ import (
88
)
99

1010
type AppConfig struct {
11-
Host string `json:"host"`
12-
DatabaseFile string `json:"databaseFile"`
13-
DefaultUser DefaultUser `json:"defaultUser"`
14-
GuestUser DefaultUser `json:"guestUser"`
15-
VpsLoginLink string `json:"vpsLoginLink"`
16-
JWTSecret string `json:"jwtSecret"`
17-
SongsFolder string `json:"songsFolder"`
18-
WebSocketOrigins []string `json:"webSocketOrigins"`
11+
Host string `json:"host"`
12+
DatabaseFile string `json:"databaseFile"`
13+
DefaultUser DefaultUser `json:"defaultUser"`
14+
GuestUser DefaultUser `json:"guestUser"`
15+
VpsLoginLink string `json:"vpsLoginLink"`
16+
JWTSecret string `json:"jwtSecret"`
17+
// todo: rename json and update config
18+
ExplorerRoot string `json:"songsFolder"`
19+
WebSocketOrigins []string `json:"webSocketOrigins"`
1920
}
2021

2122
type DefaultUser struct {

infrastructure/setup/app.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,17 @@ import (
66
"go-api/infrastructure/myLog"
77
"go-api/infrastructure/websockets"
88
"go-api/pages"
9+
"go-api/pages/fileExplorer"
910
"go-api/pages/forgotPassword"
1011
"go-api/pages/index"
1112
"go-api/pages/login"
1213
"go-api/pages/logout"
13-
"go-api/pages/music"
1414
"go-api/pages/notFound"
15-
"gorm.io/gorm"
1615
"net/http"
1716
"os"
1817
"time"
18+
19+
"gorm.io/gorm"
1920
)
2021

2122
// App = http.ServeMux + Middleware slice
@@ -30,9 +31,9 @@ type App struct {
3031
func NewApp(appConfig appConfig.AppConfig) *App {
3132
db := OpenDb(appConfig)
3233

33-
err := os.MkdirAll(appConfig.SongsFolder, 0766)
34+
err := os.MkdirAll(appConfig.ExplorerRoot, 0766)
3435
if err != nil {
35-
myLog.Fatal.Logf("Failed to ensure songs folder exists")
36+
myLog.Fatal.Logf("Failed to ensure explorer root folder exists")
3637
}
3738

3839
return &App{
@@ -84,12 +85,12 @@ func (app *App) MapRoutes() {
8485

8586
app.handleFunc("GET /logout", logout.GetHandler)
8687

87-
var musicController = music.NewController(app.Config)
88-
app.handleFunc("GET /listSongs/{path...}", authRequired(musicController.GetSongs))
89-
app.handleFunc("GET /song/{path...}", musicController.GetSongHandler)
90-
app.handleFunc("PUT /song/{path...}", authRequired(musicController.PutSongHandler))
91-
app.handleFunc("DELETE /song/{path...}", authRequired(musicController.DeleteSongHandler))
92-
app.handleFunc("PUT /songFolder/{path...}", authRequired(musicController.CreateFolderHandler))
88+
var explorerController = fileExplorer.NewController(app.Config)
89+
app.handleFunc("GET /exploreAt/{path...}", authRequired(explorerController.ExploreAt))
90+
app.handleFunc("GET /file/{path...}", explorerController.GetFile)
91+
app.handleFunc("PUT /file/{path...}", authRequired(explorerController.PutFile))
92+
app.handleFunc("DELETE /file/{path...}", authRequired(explorerController.DeleteFile))
93+
app.handleFunc("PUT /directory/{path...}", authRequired(explorerController.PutDirectory))
9394

9495
app.handleFunc("GET /public/{path...}", pages.PublicHandler)
9596

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package music
1+
package fileExplorer
22

33
import (
44
"errors"
@@ -9,9 +9,9 @@ import (
99
"path/filepath"
1010
)
1111

12-
func (controller *Controller) DeleteSongHandler(w reqRes.MyResponseWriter, r *reqRes.MyRequest) {
12+
func (controller *Controller) DeleteFile(w reqRes.MyResponseWriter, r *reqRes.MyRequest) {
1313
pathQueryParam := r.PathValue("path")
14-
pathToRemove := filepath.Join(controller.songsFolder, pathQueryParam)
14+
pathToRemove := filepath.Join(controller.explorerRoot, pathQueryParam)
1515

1616
stat, err := os.Stat(pathToRemove)
1717
if errors.Is(err, os.ErrNotExist) {
@@ -43,5 +43,5 @@ func (controller *Controller) DeleteSongHandler(w reqRes.MyResponseWriter, r *re
4343
resultMessage = "File deleted!"
4444
}
4545

46-
readDir(w, fileSystemFolder, queryFolder, resultMessage)
46+
renderExplorer(w, fileSystemFolder, queryFolder, resultMessage)
4747
}
Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package music
1+
package fileExplorer
22

33
import (
44
"errors"
@@ -16,9 +16,9 @@ import (
1616
"strings"
1717
)
1818

19-
var songsTemplate = template.Must(template.ParseFiles("pages/music/songsPartial.gohtml"))
19+
var fileExplorerTemplate = template.Must(template.ParseFiles("pages/fileExplorer/fileExplorerPartial.gohtml"))
2020

21-
type SongsData struct {
21+
type FilesData struct {
2222
Items []SongItem
2323
Path string
2424
ResultMessage string
@@ -33,14 +33,14 @@ type SongItem struct {
3333
Size string
3434
}
3535

36-
func (controller *Controller) GetSongs(w reqRes.MyResponseWriter, r *reqRes.MyRequest) {
36+
func (controller *Controller) ExploreAt(w reqRes.MyResponseWriter, r *reqRes.MyRequest) {
3737
pathQueryParam := r.PathValue("path")
38-
folder := filepath.Join(controller.songsFolder, pathQueryParam)
38+
folder := filepath.Join(controller.explorerRoot, pathQueryParam)
3939

40-
readDir(w, folder, pathQueryParam, "")
40+
renderExplorer(w, folder, pathQueryParam, "")
4141
}
4242

43-
func readDir(w reqRes.MyResponseWriter, fileSystemFolder string, queryFolder string, resultMessage string) {
43+
func renderExplorer(w reqRes.MyResponseWriter, fileSystemFolder string, queryFolder string, resultMessage string) {
4444
dirAsFile, err := os.Open(fileSystemFolder)
4545
if err != nil {
4646
if errors.Is(err, os.ErrNotExist) {
@@ -78,7 +78,7 @@ func readDir(w reqRes.MyResponseWriter, fileSystemFolder string, queryFolder str
7878
return
7979
}
8080

81-
var templatePageData = SongsData{
81+
var templatePageData = FilesData{
8282
Items: make([]SongItem, len(dirEntries)),
8383
Path: queryFolder,
8484
ResultMessage: resultMessage,
@@ -117,7 +117,7 @@ func readDir(w reqRes.MyResponseWriter, fileSystemFolder string, queryFolder str
117117
})
118118
}
119119

120-
w.RenderTemplate(songsTemplate, templatePageData)
120+
w.RenderTemplate(fileExplorerTemplate, templatePageData)
121121
}
122122

123123
func isSong(fileName string) bool {

pages/fileExplorer/GetFile.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package fileExplorer
2+
3+
import (
4+
"go-api/infrastructure/reqRes"
5+
"net/http"
6+
"path/filepath"
7+
)
8+
9+
func (controller *Controller) GetFile(w reqRes.MyResponseWriter, r *reqRes.MyRequest) {
10+
pathQueryParam := r.PathValue("path")
11+
filename := filepath.Join(controller.explorerRoot, pathQueryParam)
12+
http.ServeFile(w, &r.Request, filename)
13+
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package music
1+
package fileExplorer
22

33
import (
44
"fmt"
@@ -12,7 +12,7 @@ const kilobyte = 1 << 10
1212

1313
const filePermissions = 0766
1414

15-
func (controller *Controller) CreateFolderHandler(w reqRes.MyResponseWriter, r *reqRes.MyRequest) {
15+
func (controller *Controller) PutDirectory(w reqRes.MyResponseWriter, r *reqRes.MyRequest) {
1616
pathQueryParam := r.PathValue("path")
1717

1818
err := r.ParseMultipartForm(kilobyte)
@@ -28,7 +28,7 @@ func (controller *Controller) CreateFolderHandler(w reqRes.MyResponseWriter, r *
2828
return
2929
}
3030

31-
folder := filepath.Join(controller.songsFolder, pathQueryParam)
31+
folder := filepath.Join(controller.explorerRoot, pathQueryParam)
3232
path := filepath.Join(folder, value)
3333

3434
err = os.Mkdir(path, filePermissions)
@@ -38,5 +38,5 @@ func (controller *Controller) CreateFolderHandler(w reqRes.MyResponseWriter, r *
3838
return
3939
}
4040

41-
readDir(w, folder, pathQueryParam, "Folder created!")
41+
renderExplorer(w, folder, pathQueryParam, "Folder created!")
4242
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package music
1+
package fileExplorer
22

33
import (
44
"fmt"
@@ -12,7 +12,7 @@ import (
1212

1313
const hundredMegs = 100 << 20
1414

15-
func (controller *Controller) PutSongHandler(w reqRes.MyResponseWriter, r *reqRes.MyRequest) {
15+
func (controller *Controller) PutFile(w reqRes.MyResponseWriter, r *reqRes.MyRequest) {
1616
pathQueryParam := r.PathValue("path")
1717

1818
err := r.ParseMultipartForm(hundredMegs)
@@ -34,7 +34,7 @@ func (controller *Controller) PutSongHandler(w reqRes.MyResponseWriter, r *reqRe
3434
fmt.Printf("File Size: %+v\n", handler.Size)
3535
fmt.Printf("MIME Header: %+v\n", handler.Header)
3636

37-
folder := filepath.Join(controller.songsFolder, pathQueryParam)
37+
folder := filepath.Join(controller.explorerRoot, pathQueryParam)
3838
path := filepath.Join(folder, handler.Filename)
3939

4040
diskFile, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE, filePermissions)
@@ -52,5 +52,5 @@ func (controller *Controller) PutSongHandler(w reqRes.MyResponseWriter, r *reqRe
5252
return
5353
}
5454

55-
readDir(w, folder, pathQueryParam, "File uploaded!")
55+
renderExplorer(w, folder, pathQueryParam, "File uploaded!")
5656
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
package music
1+
package fileExplorer
22

33
import "go-api/infrastructure/appConfig"
44

55
type Controller struct {
6-
songsFolder string
6+
explorerRoot string
77
}
88

99
func NewController(config appConfig.AppConfig) *Controller {
10-
return &Controller{songsFolder: config.SongsFolder}
10+
return &Controller{explorerRoot: config.ExplorerRoot}
1111
}

pages/music/songsPartial.gohtml renamed to pages/fileExplorer/fileExplorerPartial.gohtml

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,41 @@
1-
{{- /*gotype: go-api/pages/music.SongsData*/ -}}
2-
<div id="songs-partial" class="card">
1+
{{- /*gotype: go-api/pages/music.FilesData*/ -}}
2+
<div id="files-partial" class="card">
33
<div class="grow">
44
<h3>/{{.Path}}</h3>
55
<table>
66
<tbody>
7-
{{range .Items}}
7+
{{range .Items}}
88
<tr
9-
{{if .IsDir}}
10-
hx-get="/listSongs/{{.Path}}" hx-trigger="dblclick" hx-target="#songs-partial" hx-swap="outerHTML" class="clickable"
11-
{{end}}
9+
{{if .IsDir}}
10+
hx-get="/exploreAt/{{.Path}}" hx-trigger="dblclick" hx-target="#files-partial" hx-swap="outerHTML" class="clickable"
11+
{{end}}
1212
>
1313
<td class="min-width">
14-
{{if .IsDir}}
14+
{{if .IsDir}}
1515
<img src="/public/icons/folder.svg" width="20" height="20" alt="Folder"/>
16-
{{else if .IsSong}}
16+
{{else if .IsSong}}
1717
<img src="/public/icons/music-note.svg" width="20" height="20" alt="Song"/>
18-
{{else}}
18+
{{else}}
1919
<img src="/public/icons/question-mark.svg" width="20" height="20" alt="Unknown"/>
20-
{{end}}
20+
{{end}}
2121
</td>
2222
<td class="align-start">
23-
{{.Name}}
23+
{{.Name}}
2424
</td>
2525
<td class="align-end">
26-
{{.Size}}
26+
{{.Size}}
2727
</td>
2828
<td class="align-end short">
29-
{{if not .IsGoUp}}
30-
<button class="icon-button" hx-delete="/song/{{.Path}}"
31-
hx-confirm='Are you sure you want to delete {{if .IsDir}}folder{{else}}file{{end}} "{{.Name}}"?'
32-
hx-target="#songs-browser">
29+
{{if not .IsGoUp}}
30+
<button class="icon-button" hx-delete="/file/{{.Path}}"
31+
hx-confirm='Are you sure you want to delete {{if .IsDir}}folder{{else}}file{{end}} "{{.Name}}"?'
32+
hx-target="#file-explorer">
3333
<img src="/public/icons/delete.svg" width="20" height="20" alt="Delete"/>
3434
</button>
35-
{{end}}
35+
{{end}}
3636
</td>
3737
</tr>
38-
{{end}}
38+
{{end}}
3939
</tbody>
4040
</table>
4141
</div>
@@ -44,8 +44,8 @@
4444
<section class="form-section">
4545
<h4>Create folder</h4>
4646
<form id="create-folder-form" hx-encoding="multipart/form-data"
47-
hx-put="/songFolder/{{.Path}}"
48-
hx-target="#songs-browser">
47+
hx-put="/songFolder/{{.Path}}"
48+
hx-target="#file-explorer">
4949

5050
<div class="form-control">
5151
<label for="folder-name-input">Folder name</label>
@@ -66,7 +66,7 @@
6666
<section class="form-section">
6767
<h4>Upload file</h4>
6868
<form id="file-upload-form" hx-encoding="multipart/form-data" hx-put="/song/{{.Path}}"
69-
hx-target="#songs-browser">
69+
hx-target="#file-explorer">
7070
<input id="file-input" type="file" name="file" class="primary-button">
7171
<div class="form-submit-block">
7272
<button type="submit" class="primary-button">
@@ -78,12 +78,12 @@
7878
</section>
7979

8080

81-
{{if .ResultMessage}}
81+
{{if .ResultMessage}}
8282
<hr/>
8383
<section>
8484
<p>{{.ResultMessage}}</p>
8585
</section>
86-
{{end}}
86+
{{end}}
8787
</div>
8888
<script type="module">
8989
(function initUploadForm() {

pages/index/index.gohtml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
gap: 32px;
1111
}
1212

13-
#songs-partial {
13+
#files-partial {
1414
max-width: 600px;
1515
min-height: 400px;
1616
width: 100%;
@@ -102,7 +102,7 @@
102102
{{define "content"}}
103103
<h1>Homepage</h1>
104104
<article>
105-
<h2>Available songs</h2>
106-
<div hx-get="/listSongs" hx-trigger="load" id="songs-browser"></div>
105+
<h2>File explorer</h2>
106+
<div hx-get="/exploreAt" hx-trigger="load" id="file-explorer"></div>
107107
</article>
108108
{{end}}

0 commit comments

Comments
 (0)