class Dspace::Client

Constants

DSPACE_API

Attributes

access_token[R]

Public Class Methods

new(options = {}) click to toggle source
# File lib/dspace/client.rb, line 7
def initialize(options = {})
  @access_token = options.with_indifferent_access[:access_token]
  @dspace_api = options.with_indifferent_access[:dspace_api]
  @logger = options.with_indifferent_access[:logger]
end
resources() click to toggle source
# File lib/dspace/client.rb, line 22
def self.resources
  {
      bitstreams: ::Dspace::Resources::BitstreamResource,
      items: ::Dspace::Resources::ItemResource,
      collections: ::Dspace::Resources::CollectionResource,
      communities: ::Dspace::Resources::CommunityResource,
      status: ::Dspace::Resources::StatusResource,
      authentication: ::Dspace::Resources::AuthenticationResource
  }
end

Public Instance Methods

connection() click to toggle source
# File lib/dspace/client.rb, line 13
def connection
  Faraday.new(connection_options) do |req|
    req.request :multipart
    req.request :url_encoded
    req.use(Faraday::Response::Logger, @logger) unless @logger.nil?
    req.adapter :net_http_persistent
  end
end
is_running?() click to toggle source
# File lib/dspace/client.rb, line 41
def is_running?
  resource(:status).test
end
login(email, password) click to toggle source
# File lib/dspace/client.rb, line 45
def login(email, password)
  @access_token = resource(:authentication).login(email, password)
end
logout() click to toggle source
# File lib/dspace/client.rb, line 49
def logout
  resource(:authentication).logout
  @access_token = nil
end
method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/dspace/client.rb, line 33
def method_missing(name, *args, &block)
  resource(name) || super
end
resources() click to toggle source
# File lib/dspace/client.rb, line 37
def resources
  @resources ||= {}
end

Private Instance Methods

connection_options() click to toggle source
# File lib/dspace/client.rb, line 63
def connection_options
  {
      url: @dspace_api || DSPACE_API,
      ssl: {
          verify: false
      },
      headers: {
          content_type: 'application/json',
          accept: 'application/json',
          'rest-dspace-token' => access_token.to_s,
          user_agent: "dspace-rest-client #{Dspace::VERSION}"
      }
  }
end
resource(name) click to toggle source
# File lib/dspace/client.rb, line 56
def resource(name)
  if self.class.resources.keys.include?(name)
    resources[name] ||= self.class.resources[name].new(connection: connection)
    resources[name]
  end
end