Sha256: 3e9b2416ff2b8036b39f6f16e1469fb37e7fe39b2f6cc1331f3f0187ed15a683

Contents?: true

Size: 1.78 KB

Versions: 5

Compression:

Stored size: 1.78 KB

Contents

module ActiveFedora
  class Fedora
    def initialize(config)
      @config = config
      init_base_path
    end

    def host
      @config[:url]
    end

    def base_path
      @config[:base_path] || '/'
    end

    def user
      @config[:user]
    end

    def password
      @config[:password]
    end

    def connection
      # The InboundRelationConnection does provide more data, useful for
      # things like ldp:IndirectContainers, but it's imposes a significant
      # performance penalty on every request
      #   @connection ||= InboundRelationConnection.new(CachingConnection.new(authorized_connection))
      @connection ||= CachingConnection.new(authorized_connection)
    end

    def clean_connection
      @clean_connection ||= CleanConnection.new(connection)
    end

    def ldp_resource_service
      @service ||= LdpResourceService.new(connection)
    end

    SLASH = '/'.freeze
    BLANK = ''.freeze

    # Call this to create a Container Resource to act as the base path for this connection
    def init_base_path
      connection.head(root_resource_path)
      ActiveFedora::Base.logger.info "Attempted to init base path `#{root_resource_path}`, but it already exists" if ActiveFedora::Base.logger
      false
    rescue Ldp::NotFound
      if !host.downcase.end_with?("/rest")
        ActiveFedora::Base.logger.warn "Fedora URL (#{host}) does not end with /rest. This could be a problem. Check your fedora.yml config"
      end
      connection.put(root_resource_path, BLANK).success?
    end

    # Remove a leading slash from the base_path
    def root_resource_path
      @root_resource_path ||= base_path.sub(SLASH, BLANK)
    end

    def authorized_connection
      connection = Faraday.new(host)
      connection.basic_auth(user, password)
      connection
    end

  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
active-fedora-9.5.0 lib/active_fedora/fedora.rb
active-fedora-9.4.3 lib/active_fedora/fedora.rb
active-fedora-9.4.2 lib/active_fedora/fedora.rb
active-fedora-9.4.1 lib/active_fedora/fedora.rb
active-fedora-9.4.0 lib/active_fedora/fedora.rb