Skip to content

Commit 88d58a4

Browse files
committed
feat: use appdata folder for storing credentials and token
1 parent d2f8ab5 commit 88d58a4

File tree

2 files changed

+63
-4
lines changed

2 files changed

+63
-4
lines changed

app/appdata/appdata.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package appdata
2+
3+
import (
4+
"os"
5+
"path/filepath"
6+
)
7+
8+
const APP_NAME = "spotify-playlist-sorter"
9+
10+
func GetAppDataDir() (string, error) {
11+
var baseDir string
12+
var err error
13+
14+
// os.UserConfigDir returns:
15+
// - Windows: C:\Users\<User>\AppData\Roaming
16+
// - Linux: $XDG_CONFIG_HOME or ~/.config
17+
// - macOS: ~/Library/Application Support
18+
baseDir, err = os.UserConfigDir()
19+
if err != nil {
20+
// fallback to home dir
21+
home, homeErr := os.UserHomeDir()
22+
if homeErr != nil {
23+
return "", homeErr
24+
}
25+
baseDir = home
26+
}
27+
28+
// Combine baseDir with your app name
29+
appDir := filepath.Join(baseDir, APP_NAME)
30+
31+
// Ensure directory exists
32+
if err := os.MkdirAll(appDir, 0o755); err != nil {
33+
return "", err
34+
}
35+
36+
return appDir, nil
37+
}

app/auth/token.go

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package auth
33
import (
44
"encoding/json"
55
"os"
6+
"path"
67

8+
"github.com/j0h-dev/my-spotify-playlist-sorter-go/app/appdata"
79
"golang.org/x/oauth2"
810
)
911

@@ -13,7 +15,12 @@ const SPOTIFY_CREDENTIALS_FILE = "spotify_credentials.json"
1315
func readOAuthToken() *oauth2.Token {
1416
token := &oauth2.Token{}
1517

16-
jsonData, err := os.ReadFile(OAUTH_TOKEN_FILE)
18+
appdata, err := appdata.GetAppDataDir()
19+
if err != nil {
20+
return nil
21+
}
22+
23+
jsonData, err := os.ReadFile(path.Join(appdata, OAUTH_TOKEN_FILE))
1724
if err != nil {
1825
return nil
1926
}
@@ -32,7 +39,12 @@ func saveOAuthToken(token *oauth2.Token) error {
3239
return err
3340
}
3441

35-
return os.WriteFile(OAUTH_TOKEN_FILE, jsonData, 0644)
42+
appdata, err := appdata.GetAppDataDir()
43+
if err != nil {
44+
return nil
45+
}
46+
47+
return os.WriteFile(path.Join(appdata, OAUTH_TOKEN_FILE), jsonData, 0644)
3648
}
3749

3850
type SpotifyCredentials struct {
@@ -44,7 +56,12 @@ type SpotifyCredentials struct {
4456
func readSpotifyCredentials() *SpotifyCredentials {
4557
credentials := &SpotifyCredentials{}
4658

47-
jsonData, err := os.ReadFile(SPOTIFY_CREDENTIALS_FILE)
59+
appdata, err := appdata.GetAppDataDir()
60+
if err != nil {
61+
return nil
62+
}
63+
64+
jsonData, err := os.ReadFile(path.Join(appdata, SPOTIFY_CREDENTIALS_FILE))
4865
if err != nil {
4966
return nil
5067
}
@@ -63,5 +80,10 @@ func saveSpotifyCredentials(credentials *SpotifyCredentials) error {
6380
return err
6481
}
6582

66-
return os.WriteFile(SPOTIFY_CREDENTIALS_FILE, jsonData, 0644)
83+
appdata, err := appdata.GetAppDataDir()
84+
if err != nil {
85+
return nil
86+
}
87+
88+
return os.WriteFile(path.Join(appdata, SPOTIFY_CREDENTIALS_FILE), jsonData, 0644)
6789
}

0 commit comments

Comments
 (0)