-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
58 lines (47 loc) · 1.51 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package main
import (
"log"
"net/http"
"os"
"github.com/gin-gonic/gin"
"github.com/joho/godotenv"
"github.com/martiriera/discogs-spotify/internal/discogs"
"github.com/martiriera/discogs-spotify/internal/playlist"
"github.com/martiriera/discogs-spotify/internal/server"
"github.com/martiriera/discogs-spotify/internal/session"
"github.com/martiriera/discogs-spotify/internal/spotify"
"github.com/martiriera/discogs-spotify/util"
)
func main() {
gin.SetMode(gin.ReleaseMode)
if os.Getenv("ENV") == "" {
if err := godotenv.Load(".env"); err != nil {
log.Fatalf("No .env file found")
}
gin.SetMode(gin.DebugMode)
}
clientID := util.AssertEnvVar("SPOTIFY_CLIENT_ID")
clientSecret := util.AssertEnvVar("SPOTIFY_CLIENT_SECRET")
port := util.AssertEnvVar("PORT")
spotifyAuthRedirectUrl := util.AssertEnvVar("SPOTIFY_REDIRECT_URI")
util.AssertEnvVar("SESSION_KEY")
session := session.NewGorillaSession()
session.Init(3600)
playlistController := playlist.NewPlaylistController(
discogs.NewHttpDiscogsService(&http.Client{}),
spotify.NewHttpSpotifyService(&http.Client{}),
)
oauthController := spotify.NewOAuthController(
clientID,
clientSecret,
spotifyAuthRedirectUrl,
)
userController := spotify.NewUserController(spotify.NewHttpSpotifyService(&http.Client{}))
s := server.NewServer(playlistController, oauthController, userController, session)
if port == "" {
port = "8080"
}
if err := http.ListenAndServe(":"+port, s); err != nil {
log.Fatalf("could not listen on port %s: %v", port, err)
}
}