[WIP] music platform user data scraper
teal-fm atproto
32
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 9f38a3a658459c3b546cb5631de7c1cbc9340b0d 49 lines 2.9 kB view raw
1package main 2 3import ( 4 "net/http" 5 6 "github.com/justinas/alice" 7 "github.com/spf13/viper" 8 "github.com/teal-fm/piper/session" 9) 10 11func (app *application) routes() http.Handler { 12 mux := http.NewServeMux() 13 14 mux.HandleFunc("/", session.WithPossibleAuth(home(app.database), app.sessionManager)) 15 16 // OAuth Routes 17 mux.HandleFunc("/login/spotify", app.oauthManager.HandleLogin("spotify")) 18 mux.HandleFunc("/callback/spotify", session.WithPossibleAuth(app.oauthManager.HandleCallback("spotify"), app.sessionManager)) // Use possible auth 19 mux.HandleFunc("/login/atproto", app.oauthManager.HandleLogin("atproto")) 20 mux.HandleFunc("/callback/atproto", session.WithPossibleAuth(app.oauthManager.HandleCallback("atproto"), app.sessionManager)) // Use possible auth 21 22 // Authenticated Web Routes 23 mux.HandleFunc("/current-track", session.WithAuth(app.spotifyService.HandleCurrentTrack, app.sessionManager)) 24 mux.HandleFunc("/history", session.WithAuth(app.spotifyService.HandleTrackHistory, app.sessionManager)) 25 mux.HandleFunc("/api-keys", session.WithAuth(app.apiKeyService.HandleAPIKeyManagement, app.sessionManager)) 26 mux.HandleFunc("/link-lastfm", session.WithAuth(handleLinkLastfmForm(app.database), app.sessionManager)) // GET form 27 mux.HandleFunc("/link-lastfm/submit", session.WithAuth(handleLinkLastfmSubmit(app.database), app.sessionManager)) // POST submit - Changed route slightly 28 mux.HandleFunc("/logout", app.sessionManager.HandleLogout) 29 mux.HandleFunc("/debug/", session.WithAuth(app.sessionManager.HandleDebug, app.sessionManager)) 30 31 mux.HandleFunc("/api/v1/me", session.WithAPIAuth(apiMeHandler(app.database), app.sessionManager)) 32 mux.HandleFunc("/api/v1/lastfm", session.WithAPIAuth(apiGetLastfmUserHandler(app.database), app.sessionManager)) 33 mux.HandleFunc("/api/v1/lastfm/set", session.WithAPIAuth(apiLinkLastfmHandler(app.database), app.sessionManager)) 34 mux.HandleFunc("/api/v1/lastfm/unset", session.WithAPIAuth(apiUnlinkLastfmHandler(app.database), app.sessionManager)) 35 mux.HandleFunc("/api/v1/current-track", session.WithAPIAuth(apiCurrentTrack(app.spotifyService), app.sessionManager)) // Spotify Current 36 mux.HandleFunc("/api/v1/history", session.WithAPIAuth(apiTrackHistory(app.spotifyService), app.sessionManager)) // Spotify History 37 mux.HandleFunc("/api/v1/musicbrainz/search", apiMusicBrainzSearch(app.mbService)) // MusicBrainz (public?) 38 39 serverUrlRoot := viper.GetString("server.root_url") 40 atpClientId := viper.GetString("atproto.client_id") 41 atpCallbackUrl := viper.GetString("atproto.callback_url") 42 mux.HandleFunc("/.well-known/client-metadata.json", func(w http.ResponseWriter, r *http.Request) { 43 app.atprotoService.HandleClientMetadata(w, r, serverUrlRoot, atpClientId, atpCallbackUrl) 44 }) 45 mux.HandleFunc("/oauth/jwks.json", app.atprotoService.HandleJwks) 46 47 standard := alice.New() 48 return standard.Then(mux) 49}