YouTube Data API v3 engine: - Add YouTubeConfig to EnginesConfig with api_key field - Add YOUTUBE_API_KEY env override - Thread *config.Config through search service to factory - Factory falls back to env vars if config fields are empty - Update config.example.toml with youtube section Also update default local_ported to include google and youtube.
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package engines
|
|
|
|
import (
|
|
"net/http"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/metamorphosis-dev/kafka/internal/config"
|
|
)
|
|
|
|
// NewDefaultPortedEngines returns the starter set of Go-native engines.
|
|
// The service can swap/extend this registry later as more engines are ported.
|
|
// If cfg is nil, falls back to reading API keys from environment variables.
|
|
func NewDefaultPortedEngines(client *http.Client, cfg *config.Config) map[string]Engine {
|
|
if client == nil {
|
|
client = &http.Client{Timeout: 10 * time.Second}
|
|
}
|
|
|
|
var braveAPIKey, braveAccessToken, youtubeAPIKey string
|
|
if cfg != nil {
|
|
braveAPIKey = cfg.Engines.Brave.APIKey
|
|
braveAccessToken = cfg.Engines.Brave.AccessToken
|
|
youtubeAPIKey = cfg.Engines.YouTube.APIKey
|
|
}
|
|
if braveAPIKey == "" {
|
|
braveAPIKey = os.Getenv("BRAVE_API_KEY")
|
|
}
|
|
if braveAccessToken == "" {
|
|
braveAccessToken = os.Getenv("BRAVE_ACCESS_TOKEN")
|
|
}
|
|
if youtubeAPIKey == "" {
|
|
youtubeAPIKey = os.Getenv("YOUTUBE_API_KEY")
|
|
}
|
|
|
|
return map[string]Engine{
|
|
"wikipedia": &WikipediaEngine{client: client},
|
|
"arxiv": &ArxivEngine{client: client},
|
|
"crossref": &CrossrefEngine{client: client},
|
|
"braveapi": &BraveEngine{
|
|
client: client,
|
|
apiKey: braveAPIKey,
|
|
accessGateToken: braveAccessToken,
|
|
resultsPerPage: 20,
|
|
},
|
|
"qwant": &QwantEngine{
|
|
client: client,
|
|
category: "web-lite",
|
|
resultsPerPage: 10,
|
|
},
|
|
"duckduckgo": &DuckDuckGoEngine{client: client},
|
|
"github": &GitHubEngine{client: client},
|
|
"reddit": &RedditEngine{client: client},
|
|
"bing": &BingEngine{client: client},
|
|
"google": &GoogleEngine{client: client},
|
|
"youtube": &YouTubeEngine{
|
|
client: client,
|
|
apiKey: youtubeAPIKey,
|
|
baseURL: "https://www.googleapis.com",
|
|
},
|
|
}
|
|
}
|