class Locomotive::Steam::AssetHostService

Attributes

request[R]
site[R]

Public Class Methods

new(request, site, default_host) click to toggle source
# File lib/locomotive/steam/services/asset_host_service.rb, line 8
def initialize(request, site, default_host)
  @request, @site, @default_host = request, site, default_host
end

Public Instance Methods

compute(source, timestamp = nil) click to toggle source
# File lib/locomotive/steam/services/asset_host_service.rb, line 12
def compute(source, timestamp = nil)
  return source if source.blank?

  timestamp ||= (site.try(:template_version) || site.try(:updated_at)).to_i

  return add_timestamp_suffix(source, timestamp) if source =~ Steam::IsHTTP

  url = self.host ? build_url(host, source) : source

  add_timestamp_suffix(url, timestamp)
end
host() click to toggle source
# File lib/locomotive/steam/services/asset_host_service.rb, line 24
def host
  return @host if @host

  @host = if site.try(:asset_host).present?
    build_host_with_protocol(site.asset_host)
  elsif @default_host.respond_to?(:call)
    @default_host.call(request, site)
  elsif @default_host.present?
    build_host_with_protocol(@default_host)
  else
    nil
  end
end

Private Instance Methods

add_timestamp_suffix(source, timestamp) click to toggle source
# File lib/locomotive/steam/services/asset_host_service.rb, line 45
def add_timestamp_suffix(source, timestamp)
  if timestamp.nil? || timestamp == 0 || source.include?('?')
    source
  else
    "#{source}?#{timestamp}"
  end
end
build_host_with_protocol(host) click to toggle source
# File lib/locomotive/steam/services/asset_host_service.rb, line 53
def build_host_with_protocol(host)
  host =~ Steam::IsHTTP ? host : "https://#{host}"
end
build_url(host, source) click to toggle source
# File lib/locomotive/steam/services/asset_host_service.rb, line 40
def build_url(host, source)
  clean_source = source.sub(/\A^\//, '')
  URI.join(host, clean_source).to_s
end