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

Private Instance Methods

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