Sha256: 2cc3e275c49ab4126e0640a70e51b900c02540134185178c8951159d9754d7dd

Contents?: true

Size: 1002 Bytes

Versions: 30

Compression:

Stored size: 1002 Bytes

Contents

# frozen_string_literal: true

module Motor
  module Assets
    InvalidPathError = Class.new(StandardError)

    ASSETS_PATH = Pathname.new(__dir__).join('../../ui/dist')
    MANIFEST_PATH = ASSETS_PATH.join('manifest.json')
    DEV_SERVER_URL = 'http://localhost:9090/'

    module_function

    def manifest
      JSON.parse(MANIFEST_PATH.read)
    end

    def asset_path(path)
      Motor::Admin.routes.url_helpers.motor_asset_path(manifest[path])
    end

    def load_asset(filename, gzip: false)
      if Motor.development?
        load_from_dev_server(filename)
      else
        load_from_disk(filename, gzip: gzip)
      end
    end

    def load_from_disk(filename, gzip:)
      filename += '.gz' if gzip

      path = ASSETS_PATH.join(filename)

      raise InvalidPathError unless path.to_s.starts_with?(ASSETS_PATH.to_s)

      path.read
    end

    def load_from_dev_server(filename)
      uri = URI(DEV_SERVER_URL + filename)

      Net::HTTP.get_response(uri).body
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
motor-admin-0.1.44 lib/motor/assets.rb
motor-admin-0.1.43 lib/motor/assets.rb
motor-admin-0.1.42 lib/motor/assets.rb
motor-admin-0.1.41 lib/motor/assets.rb
motor-admin-0.1.40 lib/motor/assets.rb
motor-admin-0.1.39 lib/motor/assets.rb
motor-admin-0.1.37 lib/motor/assets.rb
motor-admin-0.1.36 lib/motor/assets.rb
motor-admin-0.1.35 lib/motor/assets.rb
motor-admin-0.1.34 lib/motor/assets.rb
motor-admin-0.1.33 lib/motor/assets.rb
motor-admin-0.1.32 lib/motor/assets.rb
motor-admin-0.1.31 lib/motor/assets.rb
motor-admin-0.1.29 lib/motor/assets.rb
motor-admin-0.1.28 lib/motor/assets.rb
motor-admin-0.1.27 lib/motor/assets.rb
motor-admin-0.1.25 lib/motor/assets.rb
motor-admin-0.1.23 lib/motor/assets.rb
motor-admin-0.1.22 lib/motor/assets.rb
motor-admin-0.1.21 lib/motor/assets.rb