class PuppetForgeServer::Backends::ProxyV3
Attributes
PRIORITY[R]
Public Class Methods
new(url, cache_dir, http_client = PuppetForgeServer::Http::HttpClient.new)
click to toggle source
Calls superclass method
PuppetForgeServer::Backends::Proxy::new
# File lib/puppet_forge_server/backends/proxy_v3.rb, line 25 def initialize(url, cache_dir, http_client = PuppetForgeServer::Http::HttpClient.new) super(url, cache_dir, http_client, @@FILE_PATH) end
Public Instance Methods
get_metadata(author, name, options = {})
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v3.rb, line 29 def get_metadata(author, name, options = {}) query ="#{author}-#{name}" begin releases = get_releases(query, options) get_modules(releases) rescue => e @log.error("#{self.class.name} failed querying metadata for '#{query}' with options #{options}") @log.error("Error: #{e}") return nil end end
query_metadata(query, options = {})
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v3.rb, line 41 def query_metadata(query, options = {}) begin releases = get_all_result_pages("/v3/modules?query=#{query}").map {|element| element['current_release']} get_modules(releases) rescue => e @log.error("#{self.class.name} failed querying metadata for '#{query}' with options #{options}") @log.error("Error: #{e}") return nil end end
Private Instance Methods
get_all_result_pages(next_page)
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v3.rb, line 66 def get_all_result_pages(next_page) results = [] begin current_page = JSON.parse(get(next_page)) results += current_page['results'] next_page = current_page['pagination']['next'] end while next_page results end
get_modules(releases)
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v3.rb, line 88 def get_modules(releases) releases.map do |element| PuppetForgeServer::Models::Module.new({ :metadata => parse_dependencies(PuppetForgeServer::Models::Metadata.new(normalize_metadata(element['metadata']))), :checksum => element['file_md5'], :path => element['file_uri'].gsub(/^#{@@FILE_PATH}/, ''), :tags => (element['tags'] + (element['metadata']['tags'] ? element['metadata']['tags'] : [])).flatten.uniq, :deleted_at => element['deleted_at'], :readme => element['readme'] }) end end
get_releases(query, options = {})
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v3.rb, line 54 def get_releases(query, options = {}) version = options[:version] unless version.nil? url = "/v3/releases/#{query}-#{version}" buffer = get_non_mutable(url) release = JSON.parse(buffer) [ release ] else get_all_result_pages("/v3/releases?module=#{query}") end end
normalize_metadata(metadata)
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v3.rb, line 76 def normalize_metadata(metadata) metadata['name'] = metadata['name'].gsub('/', '-') metadata end
parse_dependencies(metadata)
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v3.rb, line 81 def parse_dependencies(metadata) metadata.dependencies = metadata.dependencies.dup.map do |dependency| PuppetForgeServer::Models::Dependency.new({:name => dependency['name'], :version_requirement => dependency['version_requirement']}) end.flatten metadata end