+1
-1
.air.toml
+1
-1
.air.toml
+2
-2
cmd/main.go
+2
-2
cmd/main.go
···
99
99
mbService: mbService,
100
100
spotifyService: spotifyService,
101
101
atprotoService: atprotoService,
102
-
} // MusicBrainz (public?)
102
+
}
103
103
104
104
trackerInterval := time.Duration(viper.GetInt("tracker.interval")) * time.Second
105
105
lastfmInterval := time.Duration(viper.GetInt("lastfm.interval_seconds")) * time.Second // Add config for Last.fm interval
···
117
117
serverAddr := fmt.Sprintf("%s:%s", viper.GetString("server.host"), viper.GetString("server.port"))
118
118
server := &http.Server{
119
119
Addr: serverAddr,
120
-
Handler: routes(app),
120
+
Handler: app.routes(),
121
121
IdleTimeout: time.Minute,
122
122
ReadTimeout: 5 * time.Second,
123
123
WriteTimeout: 10 * time.Second,
+6
-4
cmd/routes.go
+6
-4
cmd/routes.go
···
3
3
import (
4
4
"net/http"
5
5
6
+
"github.com/justinas/alice"
6
7
"github.com/spf13/viper"
7
8
"github.com/teal-fm/piper/session"
8
9
)
9
10
10
-
func routes(app *application) http.Handler {
11
+
func (app *application) routes() http.Handler {
11
12
mux := http.NewServeMux()
12
13
13
14
mux.HandleFunc("/", session.WithPossibleAuth(home(app.database), app.sessionManager))
···
29
30
30
31
mux.HandleFunc("/api/v1/current-track", session.WithAPIAuth(apiCurrentTrack(app.spotifyService), app.sessionManager)) // Spotify Current
31
32
mux.HandleFunc("/api/v1/history", session.WithAPIAuth(apiTrackHistory(app.spotifyService), app.sessionManager)) // Spotify History
32
-
mux.HandleFunc("/api/v1/musicbrainz/search", apiMusicBrainzSearch(app.mbService))
33
+
mux.HandleFunc("/api/v1/musicbrainz/search", apiMusicBrainzSearch(app.mbService)) // MusicBrainz (public?)
33
34
34
35
serverUrlRoot := viper.GetString("server.root_url")
35
36
atpClientId := viper.GetString("atproto.client_id")
36
37
atpCallbackUrl := viper.GetString("atproto.callback_url")
37
-
http.HandleFunc("/.well-known/client-metadata.json", func(w http.ResponseWriter, r *http.Request) {
38
+
mux.HandleFunc("/.well-known/client-metadata.json", func(w http.ResponseWriter, r *http.Request) {
38
39
app.atprotoService.HandleClientMetadata(w, r, serverUrlRoot, atpClientId, atpCallbackUrl)
39
40
})
40
41
mux.HandleFunc("/oauth/jwks.json", app.atprotoService.HandleJwks)
41
42
42
-
return mux
43
+
standard := alice.New()
44
+
return standard.Then(mux)
43
45
}