class LittleGhost::Models::Catalog::ModelsDevSource
Refreshes normalized facts from the public models.dev catalog.
Public Class Methods
Source
# File lib/little_ghost/models/catalog/models_dev_source.rb, line 20 def initialize(provider_adapters:) super(name: "models.dev") @provider_adapters = provider_adapters.to_h.transform_keys(&:to_s) end
Creates a source that maps application provider names to adapters.
Calls superclass method
Public Instance Methods
Source
# File lib/little_ghost/models/catalog/models_dev_source.rb, line 26 def refresh(target: nil) document = JSON.parse( Support::HTTPClient.new(open_timeout: 5, read_timeout: 30, max_response_bytes: MAX_CATALOG_BYTES) .request(uri: URL) ) providers = target ? [target.provider] : @provider_adapters.keys providers.each_with_object({}) do |provider, result| namespace = NAMESPACES[@provider_adapters[provider]] next unless namespace && document[namespace] models = document.fetch(namespace).fetch("models") selected = target ? models.slice(target.model_id) : models selected.each { |id, value| result["#{provider}:#{id}"] = normalize(value) } end rescue JSON::ParserError, KeyError => error raise ProviderError, "models.dev returned an invalid catalog: #{error.message}" end
Fetches normalized model facts, optionally for one canonical target.