Sha256: 30a7be376caf772e287a867611bcdbb258b2363f4b2b5f4f54039967b0fd1d70

Contents?: true

Size: 662 Bytes

Versions: 1

Compression:

Stored size: 662 Bytes

Contents

# frozen_string_literal: true

module ActiveLoader
  class ContentLoader
    def initialize(path)
      @path = path
    end

    def call
      return default_content unless path

      if url?
        require "http"
        HTTP.get(path).to_s
      elsif file?
        IO.read(path)
      else
        path
      end
    end

    private

      attr_reader :path

      def default_content
        "{}"
      end

      def url?
        return false if path.empty?

        require "uri"
        !!URI.parse(path).scheme
      rescue URI::BadURIError, URI::InvalidURIError
        false
      end

      def file?
        File.file?(path)
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_loader-1.0.0 lib/active_loader/content_loader.rb