class ActiveFedora::Fedora

def authorized_connection

def authorized_connection
  options = {}
  options[:ssl] = ssl_options if ssl_options
  connection = Faraday.new(host, options)
  connection.basic_auth(user, password)
  connection
end

def base_path

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

def clean_connection

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

def connection

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, omit_ldpr_interaction_model: true)
end

def host

def host
  @config[:url]
end

def init_base_path

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
  unless 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

def initialize(config)

def initialize(config)
  @config = config
  init_base_path
end

def ldp_resource_service

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

def password

def password
  @config[:password]
end

def root_resource_path

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

def ssl_options

def ssl_options
  @config[:ssl]
end

def user

def user
  @config[:user]
end