Sha256: 5e1928d50a1b56ced0bc5fd49257d14533ace79be67c3fd76f75642a8c00d554

Contents?: true

Size: 1.43 KB

Versions: 19

Compression:

Stored size: 1.43 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/i
            File.new(encoding, logger, parsed_uri.path)
          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

19 entries across 19 versions & 1 rubygems

Version Path
rabbit-2.1.3 lib/rabbit/source/uri.rb
rabbit-2.1.2 lib/rabbit/source/uri.rb
rabbit-2.1.1 lib/rabbit/source/uri.rb
rabbit-2.1.0 lib/rabbit/source/uri.rb
rabbit-2.0.9 lib/rabbit/source/uri.rb
rabbit-2.0.8 lib/rabbit/source/uri.rb
rabbit-2.0.7 lib/rabbit/source/uri.rb
rabbit-2.0.6 lib/rabbit/source/uri.rb
rabbit-2.0.5 lib/rabbit/source/uri.rb
rabbit-2.0.4 lib/rabbit/source/uri.rb
rabbit-2.0.3 lib/rabbit/source/uri.rb
rabbit-2.0.2 lib/rabbit/source/uri.rb
rabbit-2.0.1 lib/rabbit/source/uri.rb
rabbit-2.0.0 lib/rabbit/source/uri.rb
rabbit-1.0.9 lib/rabbit/source/uri.rb
rabbit-1.0.8 lib/rabbit/source/uri.rb
rabbit-1.0.7 lib/rabbit/source/uri.rb
rabbit-1.0.6 lib/rabbit/source/uri.rb
rabbit-1.0.5 lib/rabbit/source/uri.rb