Sha256: 95170da4b9c69fdb7b3703d1eaf4683f55a039f56113fd6c97569641ec722678

Contents?: true

Size: 1005 Bytes

Versions: 15

Compression:

Stored size: 1005 Bytes

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://"))
      end
    end

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

    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

    def gzipped_size
      @gzipped_size ||= content.bytesize
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
theme-check-1.5.1 lib/theme_check/remote_asset_file.rb
theme-check-1.5.0 lib/theme_check/remote_asset_file.rb
theme-check-1.4.0 lib/theme_check/remote_asset_file.rb
theme-check-1.3.0 lib/theme_check/remote_asset_file.rb
theme-check-1.2.0 lib/theme_check/remote_asset_file.rb
theme-check-1.1.0 lib/theme_check/remote_asset_file.rb
theme-check-1.0.0 lib/theme_check/remote_asset_file.rb
theme-check-0.10.2 lib/theme_check/remote_asset_file.rb
theme-check-0.10.1 lib/theme_check/remote_asset_file.rb
theme-check-0.10.0 lib/theme_check/remote_asset_file.rb
theme-check-0.9.1 lib/theme_check/remote_asset_file.rb
theme-check-0.9.0 lib/theme_check/remote_asset_file.rb
theme-check-0.8.3 lib/theme_check/remote_asset_file.rb
theme-check-0.8.2 lib/theme_check/remote_asset_file.rb
theme-check-0.8.1 lib/theme_check/remote_asset_file.rb