Class: ThemeCheck::RemoteAssetFile

Inherits:
Object
  • Object
show all
Defined in:
lib/theme_check/remote_asset_file.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(src) ⇒ RemoteAssetFile

Returns a new instance of RemoteAssetFile.



23
24
25
26
# File 'lib/theme_check/remote_asset_file.rb', line 23

def initialize(src)
  @uri = RemoteAssetFile.uri(src)
  @content = nil
end

Class Method Details

.cacheObject



8
9
10
# File 'lib/theme_check/remote_asset_file.rb', line 8

def cache
  @cache ||= {}
end

.from_src(src) ⇒ Object



12
13
14
15
16
# File 'lib/theme_check/remote_asset_file.rb', line 12

def from_src(src)
  key = uri(src).to_s
  cache[key] = RemoteAssetFile.new(src) unless cache.key?(key)
  cache[key]
end

.uri(src) ⇒ Object



18
19
20
# File 'lib/theme_check/remote_asset_file.rb', line 18

def uri(src)
  URI.parse(src.sub(%r{^//}, "https://"))
end

Instance Method Details

#contentObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/theme_check/remote_asset_file.rb', line 28

def content
  return @content unless @content.nil?

  res = Net::HTTP.start(@uri.hostname, @uri.port, use_ssl: @uri.scheme == 'https') do |http|
    req = Net::HTTP::Get.new(@uri)
    req['Accept-Encoding'] = 'gzip, deflate, br'
    http.request(req)
  end

  @content = res.body

rescue OpenSSL::SSL::SSLError, Zlib::StreamError, *NET_HTTP_EXCEPTIONS
  @contents = ''
end

#gzipped_sizeObject



43
44
45
# File 'lib/theme_check/remote_asset_file.rb', line 43

def gzipped_size
  @gzipped_size ||= content.bytesize
end