added option to use proxy for oauth
This commit is contained in:
parent
cd07570ec3
commit
e650bde5a5
@ -12,6 +12,8 @@ type args struct {
|
|||||||
PlaylistID string `arg:"--playlist-id,required,env:SPOTIFY_PLAYLIST_ID" help:"Just the id" placeholder:"SPOTIFY_PLAYLIST_ID"`
|
PlaylistID string `arg:"--playlist-id,required,env:SPOTIFY_PLAYLIST_ID" help:"Just the id" placeholder:"SPOTIFY_PLAYLIST_ID"`
|
||||||
RedirectURL string `arg:"--redirect-url,required,env:SPOTIFY_REDIRECT_URL" help:"Must be the same as in the Spotify developer dashboard." placeholder:"SPOTIFY_REDIRECT_URL"`
|
RedirectURL string `arg:"--redirect-url,required,env:SPOTIFY_REDIRECT_URL" help:"Must be the same as in the Spotify developer dashboard." placeholder:"SPOTIFY_REDIRECT_URL"`
|
||||||
ListenAddr string `arg:"--listen-addr,env:LISTEN_ADDR" help:"Address to listen on" placeholder:"LISTEN_ADDR" default:":3000"`
|
ListenAddr string `arg:"--listen-addr,env:LISTEN_ADDR" help:"Address to listen on" placeholder:"LISTEN_ADDR" default:":3000"`
|
||||||
|
OAuthProxyURL string `arg:"--oauth-proxy-url,env:OAUTH_PROXY_URL" help:"URL of the oauth proxy" placeholder:"OAUTH_PROXY_URL"`
|
||||||
|
OAuthProxyAPIKey string `arg:"--oauth-proxy-api-key,env:OAUTH_PROXY_API_KEY" help:"API key for the oauth proxy" placeholder:"OAUTH_PROXY_API_KEY"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -25,5 +27,7 @@ func main() {
|
|||||||
PlaylistID: args.PlaylistID,
|
PlaylistID: args.PlaylistID,
|
||||||
RedirectURL: args.RedirectURL,
|
RedirectURL: args.RedirectURL,
|
||||||
ListenAddr: args.ListenAddr,
|
ListenAddr: args.ListenAddr,
|
||||||
|
OAuthProxyURL: args.OAuthProxyURL,
|
||||||
|
OAuthProxyAPIKey: args.OAuthProxyAPIKey,
|
||||||
}).Start()
|
}).Start()
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ type MorningAlarmConfig struct {
|
|||||||
PlaylistID string `json:"wakeupContext"`
|
PlaylistID string `json:"wakeupContext"`
|
||||||
RedirectURL string `json:"redirectUrl"`
|
RedirectURL string `json:"redirectUrl"`
|
||||||
ListenAddr string `json:"listenAddr"`
|
ListenAddr string `json:"listenAddr"`
|
||||||
|
OAuthProxyURL string `json:"oauthProxyUrl"`
|
||||||
|
OAuthProxyAPIKey string `json:"oauthProxyApiKey"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type MorningAlarm struct {
|
type MorningAlarm struct {
|
||||||
@ -42,7 +44,11 @@ func (ma *MorningAlarm) Start() {
|
|||||||
|
|
||||||
ma.ro = gin.Default()
|
ma.ro = gin.Default()
|
||||||
|
|
||||||
ma.setupSpotify()
|
if ma.config.OAuthProxyURL != "" {
|
||||||
|
ma.setupSpotifyWithProxy()
|
||||||
|
} else {
|
||||||
|
ma.setupSpotify()
|
||||||
|
}
|
||||||
|
|
||||||
ma.setupWebserver()
|
ma.setupWebserver()
|
||||||
|
|
||||||
|
@ -16,6 +16,32 @@ import (
|
|||||||
|
|
||||||
const redirectURI = "/api/spotifycb"
|
const redirectURI = "/api/spotifycb"
|
||||||
|
|
||||||
|
type headerTransport struct {
|
||||||
|
baseTransport http.RoundTripper
|
||||||
|
headers map[string]string
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *headerTransport) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
|
for key, value := range t.headers {
|
||||||
|
req.Header.Set(key, value)
|
||||||
|
}
|
||||||
|
|
||||||
|
return t.baseTransport.RoundTrip(req)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (ma *MorningAlarm) setupSpotifyWithProxy() {
|
||||||
|
client := &http.Client{
|
||||||
|
Transport: &headerTransport{
|
||||||
|
baseTransport: http.DefaultTransport,
|
||||||
|
headers: map[string]string{
|
||||||
|
"X-API-KEY": ma.config.OAuthProxyAPIKey,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
ma.sp = spotify.New(client, spotify.WithBaseURL(ma.config.OAuthProxyURL))
|
||||||
|
}
|
||||||
|
|
||||||
func (ma *MorningAlarm) setupSpotify() error {
|
func (ma *MorningAlarm) setupSpotify() error {
|
||||||
auth := spotifyauth.New(
|
auth := spotifyauth.New(
|
||||||
spotifyauth.WithRedirectURL(ma.config.RedirectURL+redirectURI),
|
spotifyauth.WithRedirectURL(ma.config.RedirectURL+redirectURI),
|
||||||
|
Loading…
Reference in New Issue
Block a user