No commit activity in last 3 years
No release in over 3 years
DSpace REST-API Client for Ruby! Implements all DSpace REST-API endpoints requests.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.10
~> 10.0
>= 3.4.0, ~> 3.4

Runtime

~> 0.9.2
>= 1.8.3, ~> 1.8
>= 2.9.4, ~> 2.9
>= 0.1.4
 Project Readme

DSpace REST Client

Installation

Add this line to your application's Gemfile:

gem 'dspace_rest_client'

And then execute:

$ bundle

Or install it yourself as:

$ gem install dspace_rest_client

DSpace Version

The master branch is currently on version 3.x.x, which only works with DSpace 6.

If you're using DSpace 5 you will need to use the branch v2.x.x.

Resources

Item's resources

  • action :all, 'GET /rest/items' (query_keys :expand, :limit, :offset)
  • action :find, 'GET /rest/items/:id' (query_keys :expand)
  • action :find_by_metadata, 'POST /rest/items/find-by-metadata-field'
  • action :metadata, 'GET /rest/items/:id/metadata'
  • action :bitstreams, 'GET /rest/items/:id/bitstreams' (query_keys :expand, :limit, :offset)
  • action :delete, 'DELETE /rest/items/:id'
  • action :clear_metadata, 'DELETE /rest/items/:id/metadata'
  • action :delete_bitstream, 'DELETE /rest/items/:id/bitstreams/:bitstream_id'
  • action :add_metadata, 'POST /rest/items/:id/metadata'
  • action :add_bitstream, 'POST /rest/items/:id/bitstreams' (query_keys :name, :description, :bundle_name)
  • action :update_metadata, 'PUT /rest/items/:id/metadata'

Collection's resources

  • action :all, 'GET /rest/collections' (query_keys :expand, :limit, :offset)
  • action :find, 'GET /rest/collections/:id' (query_keys :expand)
  • action :update, 'PUT /rest/collections/:id'
  • action :delete, 'DELETE /rest/collections/:id'
  • action :delete_item, 'DELETE /rest/collections/:id/items/:item_id'
  • action :items, 'GET /rest/collections/:id/items' (query_keys :expand, :limit, :offset)
  • action :create_item, 'POST /rest/collections/:id/items'

Community's resources

  • action :all, 'GET /rest/communities' (query_keys :expand, :limit, :offset)
  • action :top_communities, 'GET /rest/communities/top-communities' (query_keys :expand, :limit, :offset)
  • action :find, 'GET /rest/communities/:id' (query_keys :expand)
  • action :collections, 'GET /rest/communities/:id/collections' (query_keys :expand, :limit, :offset)
  • action :sub_communities, 'GET /rest/communities/:id/communities' (query_keys :expand, :limit, :offset)
  • action :create, 'POST /rest/communities'
  • action :create_subcommunity, 'POST /rest/communities/:id/communities'
  • action :create_collection, 'POST /rest/communities/:id/collections'
  • action :update, 'PUT /rest/communities/:id'
  • action :delete, 'DELETE /rest/communities/:id'
  • action :delete_collection, 'DELETE /rest/communities/:id/collections/:collection_id'
  • action :delete_subcommunity, 'DELETE /rest/communities/:id/communities/:subcommunity_id'

Bitstream's resources

  • action :all, 'GET /rest/bitstreams' (query_keys :expand, :limit, :offset)
  • action :find, 'GET /rest/bitstreams/:id' (query_keys :expand)
  • action :policy, 'GET /rest/bitstreams/:id/policy'
  • action :retrieve, 'GET /rest/bitstreams/:id/retrieve'
  • action :delete, 'DELETE /rest/bitstreams/:id'
  • action :delete_policy, 'DELETE /rest/bitstreams/:id/policy/:policy_id'
  • action :add_policy, 'POST /rest/bitstreams/:id/policy'
  • action :update, 'PUT /rest/bitstreams/:id'}
  • action :update_data, 'PUT /rest/bitstreams/:id/data' do

Authentication's resources

  • action :login, 'POST /rest/login'
  • action :logout, 'POST /rest/logout'

Status's resources

  • action :test, 'GET /rest/test'
  • action :status, 'GET /rest/status'

Get started

Some requests requires user authentication.

require 'dspace'
client = Dspace::Client.new(dspace_api: 'https://demo.dspace.org/')

if !client.is_running?
  raise 'Can\'t connect to DSpace API.'
end

# authenticate
client.login 'dspacedemo+admin@gmail.com', 'dspace'

# create an community
client.communities.create(Dspace::Community.new({'name' => 'Testando'}))

# get a bitstream and your file
bitstream = client.bitstreams.find(id: 20, expand: 'parent')
tmp_file = client.bitstreams.retrieve(id: 20) #<Tempfile:/tmp/..._teste.jpg>

# creating a new bitstream for some item
file = File.new('/your/path/Pictures/Celular/some_book.pdf', 'r')
bitstream = client.items.add_bitstream(file, id: 11, name: 'some_book.pdf', description: 'testing upload a pdf book')

# updating bitstream metadata
bitstream.name = 'new_book_name.pdf'
client.bitstreams.update(bitstream, id: bitstream.id)

To see more examples, visit our Wiki.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rspec spec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

Contributing

Bug reports and pull requests are welcome. This project is intended to be a safe, welcoming space for collaboration.