Method: Puppet::Forge#fetch

Defined in:
lib/puppet/forge.rb

#fetch(input) ⇒ Array<SemanticPuppet::Dependency::ModuleRelease>

Fetches ModuleRelease entries for each release of the named module.

See Also:

  • SemanticPuppet::Dependency::Source#fetch


93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/puppet/forge.rb', line 93

def fetch(input)
  name = input.tr('/', '-')
  uri = "/v3/releases?module=#{name}&sort_by=version&exclude_fields=#{MODULE_RELEASE_EXCLUSIONS}"
  if Puppet[:module_groups]
    uri += "&module_groups=#{Puppet[:module_groups].tr('+', ' ')}"
  end
  releases = []

  while uri
    # make_http_request URI encodes parameters
    response = make_http_request(uri)

    if response.code == 200
      response = Puppet::Util::Json.load(response.body)
    else
      raise ResponseError.new(:uri => response.url, :response => response)
    end

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

  return releases
end