Class: Tetra::MavenWebsite
- Inherits:
-
Object
- Object
- Tetra::MavenWebsite
- Includes:
- Logging
- Defined in:
- lib/tetra/maven_website.rb
Overview
Facade to search.maven.org (and central.sonatype.com)
Constant Summary collapse
- SEARCH_API =
API Constants
"https://search.maven.org/solrsearch/select".freeze
- DOWNLOAD_API =
"https://repo1.maven.org/maven2".freeze
Instance Method Summary collapse
- #download_pom(group_id, artifact_id, version) ⇒ Object
- #get_maven_id_from(result) ⇒ Object
- #search(params) ⇒ Object
- #search_by_group_id_and_artifact_id(group_id, artifact_id) ⇒ Object
- #search_by_maven_id(group_id, artifact_id, version) ⇒ Object
- #search_by_name(name) ⇒ Object
- #search_by_sha1(sha1) ⇒ Object
Methods included from Logging
Instance Method Details
#download_pom(group_id, artifact_id, version) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/tetra/maven_website.rb', line 45 def download_pom(group_id, artifact_id, version) # Use tr instead of gsub for performance (standard Ruby optimization) group_path = group_id.tr(".", "/") path = "#{group_path}/#{artifact_id}/#{version}/#{artifact_id}-#{version}.pom" log.debug("downloading #{path}...") # We pass empty params because the path contains everything url = "#{DOWNLOAD_API}/#{path}" fetch(url) end |
#get_maven_id_from(result) ⇒ Object
41 42 43 |
# File 'lib/tetra/maven_website.rb', line 41 def get_maven_id_from(result) [result["g"], result["a"], result["v"]] end |
#search(params) ⇒ Object
32 33 34 35 36 37 38 39 |
# File 'lib/tetra/maven_website.rb', line 32 def search(params) # Merge default API parameters full_params = params.merge("rows" => "100", "wt" => "json") response_body = fetch(SEARCH_API, full_params) json = JSON.parse(response_body) json["response"]["docs"] end |
#search_by_group_id_and_artifact_id(group_id, artifact_id) ⇒ Object
24 25 26 |
# File 'lib/tetra/maven_website.rb', line 24 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
28 29 30 |
# File 'lib/tetra/maven_website.rb', line 28 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
20 21 22 |
# File 'lib/tetra/maven_website.rb', line 20 def search_by_name(name) search(q: name) end |
#search_by_sha1(sha1) ⇒ Object
16 17 18 |
# File 'lib/tetra/maven_website.rb', line 16 def search_by_sha1(sha1) search(q: "1:\"#{sha1}\"") end |