34 lines
1011 B
Go
34 lines
1011 B
Go
package provider
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"apps/backend/internal/module/threads/domain"
|
|
)
|
|
|
|
// UnavailableProvider keeps the service operational when a deployment has not
|
|
// configured Threads yet. Every provider operation fails explicitly; it never
|
|
// creates a synthetic OAuth account or token.
|
|
type UnavailableProvider struct {
|
|
reason string
|
|
}
|
|
|
|
func NewUnavailable(reason string) *UnavailableProvider {
|
|
return &UnavailableProvider{reason: reason}
|
|
}
|
|
|
|
func (p *UnavailableProvider) Name() string { return "unavailable" }
|
|
|
|
func (p *UnavailableProvider) AuthorizeURL(string, string) string { return "" }
|
|
|
|
func (p *UnavailableProvider) ExchangeCode(context.Context, string, string) (*domain.TokenPair, error) {
|
|
return nil, fmt.Errorf("Threads OAuth is not configured: %s", p.reason)
|
|
}
|
|
|
|
func (p *UnavailableProvider) Refresh(context.Context, string) (*domain.TokenPair, error) {
|
|
return nil, fmt.Errorf("Threads OAuth is not configured: %s", p.reason)
|
|
}
|
|
|
|
var _ domain.Provider = (*UnavailableProvider)(nil)
|