class Puppet::Forge

Constants

MODULE_RELEASE_EXCLUSIONS

From forgeapi.puppet.com/#!/release/getReleases

USER_AGENT

Attributes

host[R]
repository[R]

Public Class Methods

new(host = Puppet[:module_repository]) click to toggle source
   # File lib/puppet/forge.rb
26 def initialize(host = Puppet[:module_repository])
27   @host = host
28   @repository = Puppet::Forge::Repository.new(host, USER_AGENT)
29 end

Public Instance Methods

fetch(input) click to toggle source

Fetches {ModuleRelease} entries for each release of the named module.

@param input [String] the module name to look up @return [Array<SemanticPuppet::Dependency::ModuleRelease>] a list of releases for

the given name

@see SemanticPuppet::Dependency::Source#fetch

    # File lib/puppet/forge.rb
 94 def fetch(input)
 95   name = input.tr('/', '-')
 96   uri = "/v3/releases?module=#{name}&sort_by=version&exclude_fields=#{MODULE_RELEASE_EXCLUSIONS}"
 97   if Puppet[:module_groups]
 98     uri += "&module_groups=#{Puppet[:module_groups].tr('+', ' ')}"
 99   end
100   releases = []
101 
102   while uri
103     # make_http_request URI encodes parameters
104     response = make_http_request(uri)
105 
106     if response.code == 200
107       response = Puppet::Util::Json.load(response.body)
108     else
109       raise ResponseError.new(:uri => response.url, :response => response)
110     end
111 
112     releases.concat(process(response['results']))
113     uri = decode_uri(response['pagination']['next'])
114   end
115 
116   return releases
117 end
make_http_request(*args) click to toggle source
    # File lib/puppet/forge.rb
119 def make_http_request(*args)
120   @repository.make_http_request(*args)
121 end

Private Instance Methods

decode_uri(uri) click to toggle source
    # File lib/puppet/forge.rb
255 def decode_uri(uri)
256   return if uri.nil?
257 
258   Puppet::Util.uri_unescape(uri.tr('+', ' '))
259 end
process(list) click to toggle source
    # File lib/puppet/forge.rb
241 def process(list)
242   l = list.map do |release|
243     metadata = release['metadata']
244     begin
245       ModuleRelease.new(self, release)
246     rescue ArgumentError => e
247       Puppet.warning _("Cannot consider release %{name}-%{version}: %{error}") % { name: metadata['name'], version: metadata['version'], error: e }
248       false
249     end
250   end
251 
252   l.select { |r| r }
253 end