class PuppetForgeServer::Backends::ProxyV1
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_v1.rb, line 27 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_v1.rb, line 31 def get_metadata(author, name, options = {}) options = ({:with_checksum => true}).merge(options) query ="#{author}/#{name}" begin get_modules(JSON.parse(get("/modules.json?q=#{query}")).select { |e| e['full_name'].match("#{query}") }, options) rescue => e @log.debug("#{self.class.name} failed querying metadata for '#{query}' with options #{options}") @log.debug("Error: #{e}") return nil end end
query_metadata(query, options = {})
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v1.rb, line 43 def query_metadata(query, options = {}) options = ({:with_checksum => true}).merge(options) begin get_modules(JSON.parse(get("/modules.json?q=#{query}")).select { |e| e['full_name'].match("*#{query}*") }, options) rescue => e @log.debug("#{self.class.name} failed querying metadata for '#{query}' with options #{options}") @log.debug("Error: #{e}") return nil end end
Private Instance Methods
get_modules(modules, options)
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v1.rb, line 72 def get_modules(modules, options) modules.map do |element| version = options['version'] ? "&version=#{options['version']}" : '' JSON.parse(get("/api/v1/releases.json?module=#{element['author']}/#{element['name']}#{version}")).values.first.map do |release| tags = element['tag_list'] ? element['tag_list'] : nil raw_metadata = read_metadata(element, release) PuppetForgeServer::Models::Module.new({ :metadata => parse_dependencies(PuppetForgeServer::Models::Metadata.new(raw_metadata)), :checksum => options[:with_checksum] ? Digest::MD5.hexdigest(File.read(get_file_buffer(release['file']))) : nil, :path => "#{release['file']}".gsub(/^#{@@FILE_PATH}/, ''), :tags => tags }) end end end
parse_dependencies(metadata)
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v1.rb, line 65 def parse_dependencies(metadata) metadata.dependencies = metadata.dependencies.dup.map do |dependency| PuppetForgeServer::Models::Dependency.new({:name => dependency[0], :version_requirement => dependency.length > 1 ? dependency[1] : nil}) end.flatten metadata end
read_metadata(element, release)
click to toggle source
# File lib/puppet_forge_server/backends/proxy_v1.rb, line 55 def read_metadata(element, release) element['project_page'] = element['project_url'] element['name'] = element['full_name'] ? element['full_name'].gsub('/', '-') : element['name'] element['description'] = element['desc'] element['version'] = release['version'] ? release['version'] : element['version'] element['dependencies'] = release['dependencies'] ? release['dependencies'] : [] %w(project_url full_name releases tag_list desc).each { |key| element.delete(key) } element end