func NewGate(authorizationService *AuthorizationService) *Gate {
	return &Gate{
		authorizationService:        authorizationService,
		unauthorizedResponseBody:    []byte(DefaultUnauthorizedResponseBody),
		tooManyRequestsResponseBody: []byte(DefaultTooManyRequestsResponseBody),
	}
}
NewGate creates a new Gate.
package g8
import (
	"net/http"
	"strings"
)
const (
	AuthorizationHeader = "Authorization"
	DefaultUnauthorizedResponseBody = "Authorization Bearer token is missing or invalid"
	DefaultTooManyRequestsResponseBody = "Too Many Requests"
)
type Gate struct {
	authorizationService     *AuthorizationService
	unauthorizedResponseBody []byte
	rateLimiter                 *RateLimiter
	tooManyRequestsResponseBody []byte
}