Class: Tetra::MavenWebsite

Inherits:
Object
  • Object
show all
Includes:
Logging
Defined in:
lib/tetra/maven_website.rb

Overview

Facade to search.maven.org

Instance Method Summary collapse

Methods included from Logging

#log

Instance Method Details

#download_pom(group_id, artifact_id, version) ⇒ Object

downloads a POM from a search.maven.com search result



51
52
53
54
55
# File 'lib/tetra/maven_website.rb', line 51

def download_pom(group_id, artifact_id, version)
  path = "#{group_id.gsub('.', '/')}/#{artifact_id}/#{version}/#{artifact_id}-#{version}.pom"
  log.debug("downloading #{path}...")
  get("http://repo1.maven.org/maven2/#{path}", {}).to_s
end

#get(url, params) ⇒ Object



57
58
59
60
61
62
# File 'lib/tetra/maven_website.rb', line 57

def get(url, params)
  response = Net::HTTP.get_response(URI.parse(url + URI.encode_www_form(params)))
  fail NotFoundOnMavenWebsiteError if response.code == "404"

  response.body
end

#get_maven_id_from(result) ⇒ Object

returns a Maven’s triple (artifactId, groupId, version) from a result object



46
47
48
# File 'lib/tetra/maven_website.rb', line 46

def get_maven_id_from(result)
  [result["g"], result["a"], result["v"]]
end

#search(params) ⇒ Object

returns a search result object from search.maven.com see input and output format at search.maven.org/#api



38
39
40
41
42
# File 'lib/tetra/maven_website.rb', line 38

def search(params)
  response = get("http://search.maven.org/solrsearch/select?", params.merge("rows" => "100", "wt" => "json"))
  json = JSON.parse(response.to_s)
  json["response"]["docs"]
end

#search_by_group_id_and_artifact_id(group_id, artifact_id) ⇒ Object

returns a search result object from search.maven.com searching by Maven’s group id and artifact id see output format at search.maven.org/#api



25
26
27
# File 'lib/tetra/maven_website.rb', line 25

def search_by_group_id_and_artifact_id(group_id, artifact_id)
  search(q: "g:\"#{group_id}\" AND a:\"#{artifact_id}\"", core: "gav")
end

#search_by_maven_id(group_id, artifact_id, version) ⇒ Object

returns a search result object from search.maven.com searching by Maven’s id (group id, artifact id and version) see output format at search.maven.org/#api



32
33
34
# File 'lib/tetra/maven_website.rb', line 32

def search_by_maven_id(group_id, artifact_id, version)
  search(q: "g:\"#{group_id}\" AND a:\"#{artifact_id}\" AND v:\"#{version}\"")
end

#search_by_name(name) ⇒ Object

returns a search result object from search.maven.com searching by keyword (name) see output format at search.maven.org/#api



18
19
20
# File 'lib/tetra/maven_website.rb', line 18

def search_by_name(name)
  search(q: name)
end

#search_by_sha1(sha1) ⇒ Object

returns a search result object from search.maven.com searching by a jar sha1 hash see output format at search.maven.org/#api



11
12
13
# File 'lib/tetra/maven_website.rb', line 11

def search_by_sha1(sha1)
  search(q: "1:\"#{sha1}\"")
end