class EcomEngine::Version

Public Class Methods

new(url) click to toggle source
# File lib/ecom_engine/version.rb, line 3
def initialize(url)
  @url = url
end

Public Instance Methods

value() click to toggle source
# File lib/ecom_engine/version.rb, line 7
def value
  return cache if cache_exists?
  read_and_cache
end

Private Instance Methods

cache() click to toggle source
# File lib/ecom_engine/version.rb, line 41
def cache
  cache_store.read cache_key
end
cache_exists?() click to toggle source
# File lib/ecom_engine/version.rb, line 37
def cache_exists?
  not cache.nil?
end
cache_expires_in() click to toggle source
# File lib/ecom_engine/version.rb, line 57
def cache_expires_in
  expires_in = ENV['ECOM_ENGINE_VERSION_CACHE_EXPIRES_IN']
  return expires_in.to_i if expires_in.present?
  30
end
cache_key() click to toggle source
# File lib/ecom_engine/version.rb, line 49
def cache_key
  "#{cache_key_prefix}:#{@url}"
end
cache_key_prefix() click to toggle source
# File lib/ecom_engine/version.rb, line 53
def cache_key_prefix
  :ecom_engine_version
end
cache_store() click to toggle source
# File lib/ecom_engine/version.rb, line 45
def cache_store
  Rails.cache
end
read() click to toggle source
# File lib/ecom_engine/version.rb, line 20
def read
  response = version_response
  return '' unless response.is_a? Net::HTTPSuccess
  response.body.strip
end
read_and_cache() click to toggle source
# File lib/ecom_engine/version.rb, line 14
def read_and_cache
  read.tap { |value|
    cache_store.write cache_key, value, expires_in: cache_expires_in
  }
end
version_response() click to toggle source
# File lib/ecom_engine/version.rb, line 26
def version_response
  uri = URI.parse(version_url)
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = uri.scheme == 'https'
  http.get uri.request_uri
end
version_url() click to toggle source
# File lib/ecom_engine/version.rb, line 33
def version_url
  "#{@url}/version.txt"
end