/*
Copyright © 2023 Philipp Wolfer <phw@uploadedlobster.com>

Scotty is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later version.

Scotty is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with
Scotty. If not, see <https://www.gnu.org/licenses/>.
*/

package auth

import (
	"fmt"
	"net/http"
	"net/url"
)

func RunOauth2CallbackServer(redirectURL url.URL, responseChan chan CodeResponse) {
	http.HandleFunc(redirectURL.Path, func(w http.ResponseWriter, r *http.Request) {
		code := r.URL.Query().Get("code")
		state := r.URL.Query().Get("state")
		fmt.Fprint(w, "Token received, you can close this window now.")
		responseChan <- CodeResponse{
			Code:  code,
			State: state,
		}
	})

	go http.ListenAndServe(redirectURL.Host, nil)
}