Sha256: 3a14ca5b4f028ffbbafa8c8deec705e48b7ef786fc1126c8e7e9ca87a2e7c1a8

Contents?: true

Size: 1.4 KB

Versions: 6

Compression:

Stored size: 1.4 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
      @connection ||= CachingConnection.new(authorized_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

6 entries across 6 versions & 1 rubygems

Version Path
active-fedora-9.0.8 lib/active_fedora/fedora.rb
active-fedora-9.0.6 lib/active_fedora/fedora.rb
active-fedora-9.0.5 lib/active_fedora/fedora.rb
active-fedora-9.0.4 lib/active_fedora/fedora.rb
active-fedora-9.0.3 lib/active_fedora/fedora.rb
active-fedora-9.0.2 lib/active_fedora/fedora.rb