thread-master/internal/logic/ai/credential.go

28 lines
701 B
Go

package ai
import (
"net/http"
"strings"
app "haixun-backend/internal/library/errors"
"haixun-backend/internal/library/errors/code"
)
func BearerToken(r *http.Request) (string, error) {
auth := strings.TrimSpace(r.Header.Get("Authorization"))
if auth == "" {
return "", app.For(code.AI).InputMissingRequired("missing Authorization header")
}
const prefix = "Bearer "
if !strings.HasPrefix(auth, prefix) {
return "", app.For(code.Facade).InputInvalidFormat("Authorization must be a Bearer token")
}
token := strings.TrimSpace(strings.TrimPrefix(auth, prefix))
if token == "" {
return "", app.For(code.AI).InputMissingRequired("missing AI provider token")
}
return token, nil
}