package auth

import (
	"fmt"
	"net/http"

	"github.com/go-resty/resty/v2"
)

func NewAuth0Auth(domain, clientID, auth0ClientSecret, auth0Audience string) func(r *http.Request) error {
	return func(r *http.Request) error {
		token, err := GetClientToken(domain, clientID, auth0ClientSecret, auth0Audience)
		if err != nil {
			return err
		}
		r.Header.Add("Authorization", fmt.Sprintf("bearer %s", token))
		return nil
	}
}

func NewAuth0RestyAuth(domain, clientID, auth0ClientSecret, auth0Audience string) func(r *resty.Request) error {
	return func(r *resty.Request) error {
		token, err := GetClientToken(domain, clientID, auth0ClientSecret, auth0Audience)
		if err != nil {
			return err
		}
		r.SetAuthScheme("Bearer").SetAuthToken(token)
		return nil
	}
}
