Sha256: 8fd0d63625b78b12557b1ca7891143d986647de8e52cbd45851ce8c6216cb68d

Contents?: true

Size: 1.57 KB

Versions: 3

Compression:

Stored size: 1.57 KB

Contents

require 'delegate'

module Zypper
  module Upgraderepo


    class DirRequest < SimpleDelegator

      attr_reader :dir_path

      def initialize(obj, timeout)
        super obj
      end

      def available?
        Dir.exist? ping
      end

      def redirected?
        File.symlink? ping
      end

      def redirected_to
        File.realpath ping
      end

      def not_found?
        !available?
      end

      def forbidden?
        File.readable? ping
      end

      def timeout?
        false
      end

      def status
        File.stat ping
      end

      def cache!
        @dir_path = nil
      end


      private

      def ping(uri = nil, head = true)
        @dir_path ||= URI(url).path

        @dir_path = uri.to_s =~ /^\// ? uri.to_s : URI(uri.to_s).path if uri

        URI.unescape(@dir_path)
      end

    end


    module Requests

      class LocalRequest < DirRequest

        include Traversable

        def max_drop_back; 1 end

        def self.register_protocol; ['dir'] end

        def self.domain; 'default' end

        def evaluate_alternative(version)
          if not_found?
            return traverse_url(URI(url), version)
          elsif redirected?
            return { url: redirected_to, message: 'Linked to' }
          end
        end


        private

        def has_repodata?(uri)
          File.exist? URI.unescape(repodata_uri(uri).path)
        end

        def subfolders
          Dir.glob(ping.gsub(/\/$/, '') + '/*/').map { |x| URI.escape(x.gsub(/\/$/, '').gsub(ping, '').gsub(/^\//, '')) }
        end
      end

    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
zypper-upgraderepo-1.8.1 lib/zypper/upgraderepo/requests/local.rb
zypper-upgraderepo-1.8.0 lib/zypper/upgraderepo/requests/local.rb
zypper-upgraderepo-1.7.1 lib/zypper/upgraderepo/requests/local.rb