class Puppet::Forge

Constants

USER_AGENT

Attributes

host[R]
repository[R]

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<Semantic::Dependency::ModuleRelease>] a list of releases for

the given name

@see Semantic::Dependency::Source#fetch

# File lib/puppet/forge.rb, line 89
def fetch(input)
  name = input.tr('/', '-')
  uri = "/v3/releases?module=#{name}"
  if Puppet[:module_groups]
    uri += "&module_groups=#{Puppet[:module_groups]}"
  end
  releases = []

  while uri
    response = make_http_request(uri)

    if response.code == '200'
      response = JSON.parse(response.body)
    else
      raise ResponseError.new(:uri => URI.parse(@host).merge(uri), :response => response)
    end

    releases.concat(process(response['results']))
    uri = response['pagination']['next']
  end

  return releases
end
make_http_request(*args) click to toggle source
# File lib/puppet/forge.rb, line 113
def make_http_request(*args)
  @repository.make_http_request(*args)
end

Public Class Methods

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