Sha256: e86b8b845efe21b049238f95f238604926cc09d56b726eb6f13faca85fbe62dc

Contents?: true

Size: 1.51 KB

Versions: 12

Compression:

Stored size: 1.51 KB

Contents

require "uri"
require "open-uri"

require 'rabbit/source/base'

module Rabbit
  module Source
    class URI

      include Base
      include LimitAccessInterval

      class << self
        def new(encoding, logger, uri)
          parsed_uri = ::URI.parse(uri)
          case parsed_uri.scheme
          when nil
            File.new(encoding, logger, parsed_uri.path)
          when /\Afile\z/i
            File.new(encoding, logger, uri.gsub(/\Afile:\/\//i, ""))
          else
            super
          end
        end

        def initial_args_description
          N_("URI")
        end
      end

      def initialize(encoding, logger, uri)
        @uri = ::URI.parse(uri)
        super(encoding, logger)
        @last_modified = nil
      end

      def need_read?
        super or old?(@last_modified, :last_modified)
      end

      def extension
        extract_extension(@uri.path)
      end

      private
      def _read
        begin
          @uri.open do |f|
            @last_modified = f.last_modified
            f.read
          end
        rescue
          @logger.error($!.message)
          @last_modified = Time.now + MINIMUM_ACCESS_TIME
          ""
        end
      end

      def init_base
        base = @uri.dup
        base.path = ::File.dirname(base.path)
        set_base(base.to_s)
      end

      def last_modified
        begin
          @uri.open do |f|
            f.last_modified
          end
        rescue
          @logger.error($!.message)
          Time.now
        end
      end

    end

  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
rabbit-3.0.3 lib/rabbit/source/uri.rb
rabbit-3.0.2 lib/rabbit/source/uri.rb
rabbit-3.0.1 lib/rabbit/source/uri.rb
rabbit-3.0.0 lib/rabbit/source/uri.rb
rabbit-2.2.1 lib/rabbit/source/uri.rb
rabbit-2.2.0 lib/rabbit/source/uri.rb
rabbit-2.1.9 lib/rabbit/source/uri.rb
rabbit-2.1.8 lib/rabbit/source/uri.rb
rabbit-2.1.7 lib/rabbit/source/uri.rb
rabbit-2.1.6 lib/rabbit/source/uri.rb
rabbit-2.1.5 lib/rabbit/source/uri.rb
rabbit-2.1.4 lib/rabbit/source/uri.rb