add proxy server for dynamic api endpoint handling and auth

This commit is contained in:
ju09279
2024-09-01 14:51:19 +02:00
parent 2bf269cf74
commit aea7e147e5
21 changed files with 4643 additions and 4328 deletions

66
proxy/auth.go Normal file
View File

@@ -0,0 +1,66 @@
package main
import (
"errors"
"fmt"
"net/http"
"os"
"strings"
"time"
)
const (
OsuApiUrl = "https://osu.ppy.sh/api/v2"
)
var clientid = os.Getenv("CLIENT_ID")
var clientsecret = os.Getenv("CLIENT_SECRET")
var redirect_uri = os.Getenv("REDIRECT_URI")
var scopes = []string{
"public",
"identify",
}
type OsuApiClient struct {
User User
BaseURL string
HTTPclient *http.Client
}
func NewOsuApiClient(user User) (*OsuApiClient, error) {
if user.Token == (Token{}) {
return nil, errors.New("No Valid Credentials")
}
if time.Now().After(user.ExpireDate) {
}
return &OsuApiClient{
User: user,
BaseURL: OsuApiUrl,
HTTPclient: &http.Client{
Timeout: time.Minute * 2},
}, nil
}
func LoginRedirect(w http.ResponseWriter, r *http.Request) {
fmt.Println(r.Context())
cookie, ok := r.Context().Value("cookie").(string)
if !ok || cookie == "" {
fmt.Println(cookie, ok)
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
return
}
http.Redirect(w, r,
fmt.Sprintf("https://osu.ppy.sh/oauth/authorize?client_id=%s&redirect_uri=%s&response_type=code&scope=%s&state=%s",
clientid,
redirect_uri,
strings.Join(scopes, " "),
cookie),
http.StatusPermanentRedirect)
}