Class: Fastlane::Helper::Providers::ProviderFactory
- Inherits:
-
Object
- Object
- Fastlane::Helper::Providers::ProviderFactory
- Defined in:
- lib/fastlane/plugin/translate_gpt_release_notes/helper/providers/provider_factory.rb
Overview
ProviderFactory is the central component for creating provider instances. It uses CredentialResolver to resolve API keys and instantiates the appropriate provider based on the provider_name parameter.
This class provides a unified interface for creating any supported provider with automatic credential resolution and validation.
Constant Summary collapse
- PROVIDERS =
Mapping of provider names to their respective provider classes. Used to look up and instantiate the correct provider implementation.
{ OpenAIProvider.provider_name => OpenAIProvider, AnthropicProvider.provider_name => AnthropicProvider, GeminiProvider.provider_name => GeminiProvider, DeepLProvider.provider_name => DeepLProvider }.freeze
- DEFAULT_PROVIDER =
Default provider to use when none is specified.
'openai'.freeze
Class Method Summary collapse
-
.available_provider_names ⇒ Array<String>
Returns an array of all available provider names.
-
.create(provider_name, params) ⇒ BaseProvider
Creates a provider instance with automatic credential resolution.
-
.create_with_key(provider_name, api_key, params = {}) ⇒ BaseProvider
Creates a provider instance with an explicit API key.
-
.provider_config(provider_name) ⇒ Hash
Gets the full configuration for a provider.
-
.provider_display_names ⇒ Hash<String, String>
Returns a hash mapping provider names to their display names.
-
.valid_provider?(provider_name) ⇒ Boolean
Checks if a provider name is valid.
Class Method Details
.available_provider_names ⇒ Array<String>
Returns an array of all available provider names.
101 102 103 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/providers/provider_factory.rb', line 101 def self.available_provider_names PROVIDERS.keys.freeze end |
.create(provider_name, params) ⇒ BaseProvider
Creates a provider instance with automatic credential resolution.
This method resolves the API key using CredentialResolver, merges it into the params, and instantiates the appropriate provider class.
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/providers/provider_factory.rb', line 49 def self.create(provider_name, params) provider_name = provider_name.to_s.empty? ? DEFAULT_PROVIDER : provider_name.to_s.downcase provider_class = PROVIDERS[provider_name] unless provider_class UI.user_error!("Unknown provider '#{provider_name}'. Available: #{available_provider_names.join(', ')}") return nil end # Resolve API key api_key = CredentialResolver.resolve(provider_name, params) unless api_key UI.user_error!("No API key found for provider '#{provider_name}'. #{CredentialResolver.credential_help(provider_name)}") return nil end # Merge API key into params (handle FastlaneCore::Configuration objects) params_hash = params.is_a?(Hash) ? params : params.values provider_params = params_hash.merge(api_token: api_key) provider_class.new(provider_params) end |
.create_with_key(provider_name, api_key, params = {}) ⇒ BaseProvider
Creates a provider instance with an explicit API key.
This method bypasses credential resolution and uses the provided API key directly. Useful when the key is obtained from an external source or when credential resolution is not desired.
84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/providers/provider_factory.rb', line 84 def self.create_with_key(provider_name, api_key, params = {}) provider_name = provider_name.to_s.downcase provider_class = PROVIDERS[provider_name] unless provider_class UI.user_error!("Unknown provider '#{provider_name}'") return nil end params_hash = params.is_a?(Hash) ? params : params.values provider_params = params_hash.merge(api_token: api_key) provider_class.new(provider_params) end |
.provider_config(provider_name) ⇒ Hash
Gets the full configuration for a provider.
Returns a comprehensive hash containing all configuration details for the specified provider, including name, display name, required credentials, optional parameters, and credential help text.
135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/providers/provider_factory.rb', line 135 def self.provider_config(provider_name) provider_class = PROVIDERS[provider_name.to_s.downcase] return {} unless provider_class { name: provider_class.provider_name, display_name: provider_class.display_name, required_credentials: provider_class.required_credentials, optional_params: provider_class.optional_params, credential_help: CredentialResolver.credential_help(provider_name) } end |
.provider_display_names ⇒ Hash<String, String>
Returns a hash mapping provider names to their display names.
109 110 111 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/providers/provider_factory.rb', line 109 def self.provider_display_names PROVIDERS.transform_values(&:display_name) end |
.valid_provider?(provider_name) ⇒ Boolean
Checks if a provider name is valid.
117 118 119 |
# File 'lib/fastlane/plugin/translate_gpt_release_notes/helper/providers/provider_factory.rb', line 117 def self.valid_provider?(provider_name) PROVIDERS.key?(provider_name.to_s.downcase) end |