class Desi::Upstream

Public Class Methods

new(opts = {}) click to toggle source
# File lib/desi/upstream.rb, line 42
def initialize(opts = {})
  @client = opts.fetch(:http_client_factory, Desi::HttpClient).new('https://api.github.com/')
end

Public Instance Methods

find_release(name_or_version) click to toggle source
# File lib/desi/upstream.rb, line 56
def find_release(name_or_version)
  releases.detect {|r| r === name_or_version }
end
latest_release() click to toggle source
# File lib/desi/upstream.rb, line 52
def latest_release
  releases.first
end
releases() click to toggle source
# File lib/desi/upstream.rb, line 46
def releases
  @releases ||= fetch_tags.
    map {|v| Release.new(v['name'], v['tarball_url']) }.
    sort
end

Private Instance Methods

fetch_tags() click to toggle source
# File lib/desi/upstream.rb, line 62
def fetch_tags
  JSON.parse @client.get('/repos/elastic/elasticsearch/tags').body
end