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