class Kontena::PluginManager::RubygemsClient
Constants
- ACCEPT
- HTTPOK
- JSON_MIME
Public Instance Methods
client()
click to toggle source
# File lib/kontena/plugin_manager/rubygems_client.rb, line 31 def client return @client if @client @client = Net::HTTP.new('rubygems.org', 443) @client.use_ssl = true @client end
get(path, query = nil)
click to toggle source
# File lib/kontena/plugin_manager/rubygems_client.rb, line 50 def get(path, query = nil) Kontena.logger.debug { "Requesting GET #{path}" } response = client.request(get_request(request_path(path, query))) Kontena.logger.debug { "Response #{response.code}" } raise "Server responded with #{response.code} (#{response.class.name})" unless response.code == HTTPOK JSON.parse(response.body) end
get_request(path)
click to toggle source
# File lib/kontena/plugin_manager/rubygems_client.rb, line 44 def get_request(path) request = Net::HTTP::Get.new(path) request[ACCEPT] = JSON_MIME request end
latest_version(gem_name, pre: false)
click to toggle source
Get the latest version number from rubygems @param plugin_name [String] @param pre [Boolean] include prerelease versions
# File lib/kontena/plugin_manager/rubygems_client.rb, line 26 def latest_version(gem_name, pre: false) return versions(gem_name).first if pre versions(gem_name).find { |version| !version.prerelease? } end
request_path(path, query = nil)
click to toggle source
# File lib/kontena/plugin_manager/rubygems_client.rb, line 38 def request_path(path, query = nil) uri = URI(path) uri.query = URI.encode_www_form(query) if query uri.to_s end
search(pattern = nil)
click to toggle source
# File lib/kontena/plugin_manager/rubygems_client.rb, line 14 def search(pattern = nil) get('/api/v1/search.json', query: pattern) end
versions(gem_name)
click to toggle source
# File lib/kontena/plugin_manager/rubygems_client.rb, line 18 def versions(gem_name) response = get("/api/v1/versions/#{gem_name}.json") response.map { |version| Gem::Version.new(version["number"]) }.sort.reverse end