Sha256: f3cdbfa3529256ed450c90bbf651c597df7172fb2aebd3eea50cf8ff9105a402

Contents?: true

Size: 1.08 KB

Versions: 16

Compression:

Stored size: 1.08 KB

Contents

# frozen_string_literal: true
require "net/http"
require "pathname"

module ThemeCheck
  class RemoteAssetFile
    class << self
      def cache
        @cache ||= {}
      end

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

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

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

    def content
      return if @uri.nil?
      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

    def gzipped_size
      return if @uri.nil?
      @gzipped_size ||= content.bytesize
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
theme-check-1.11.0 lib/theme_check/remote_asset_file.rb
theme-check-1.10.3 lib/theme_check/remote_asset_file.rb
theme-check-1.10.2 lib/theme_check/remote_asset_file.rb
theme-check-1.10.1 lib/theme_check/remote_asset_file.rb
theme-check-1.10.0 lib/theme_check/remote_asset_file.rb
theme-check-1.9.2 lib/theme_check/remote_asset_file.rb
theme-check-1.9.1 lib/theme_check/remote_asset_file.rb
theme-check-1.9.0 lib/theme_check/remote_asset_file.rb
theme-check-1.8.0 lib/theme_check/remote_asset_file.rb
theme-check-1.7.2 lib/theme_check/remote_asset_file.rb
theme-check-1.7.1 lib/theme_check/remote_asset_file.rb
theme-check-1.7.0 lib/theme_check/remote_asset_file.rb
theme-check-1.6.2 lib/theme_check/remote_asset_file.rb
theme-check-1.6.1 lib/theme_check/remote_asset_file.rb
theme-check-1.6.0 lib/theme_check/remote_asset_file.rb
theme-check-1.5.2 lib/theme_check/remote_asset_file.rb