Class: Tetra::MavenWebsite

Inherits:
Object
  • Object
show all
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

Methods included from Logging

#log

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