samvera / rubydora

Fedora Commons version 3 REST API ruby library
Other
27 stars 17 forks source link
core-components samvera-community

rubydora

Rubydora is a low-level Fedora Commons REST API consumer, providing direct access to REST API methods, as well as a primitive ruby abstraction.

Code: Gem Version Build Status Coverage Status

Docs: Contribution Guidelines Apache 2.0 License

Community Support: Samvera Community Slack

Product Owner & Maintenance

rubydora was a Core Component of the Samvera Community. Given a decline in available labor required for maintenance, this project no longer has a dedicated Product Owner. The documentation for what this means can be found here.

Product Owner

Vacant

_Until a Product Owner has been identified, we ask that you please direct all requests for support, bug reports, and general questions to the #dev Channel on the Samvera Slack._

Help

The Samvera community is here to help. Please see our support guide.

Installation

gem install rubydora

Examples

> repo = Rubydora.connect :url => 'http://localhost:8983/fedora', :user => 'fedoraAdmin', :password => 'fedoraAdmin'
=> #<Rubydora::Repository:0x101859538 @config={:url=>"http://localhost:8983/fedora", :user=>"fedoraAdmin", :password=>"fedoraAdmin"}>

> obj = repo.find('test:1')
=> #<Rubydora::DigitalObject:0x101977230 @pid="test:1", @repository=#<Rubydora::Repository:0x1019beef0 @config={:user=>"fedoraAdmin", :url=>"http://localhost:8983/fedora", :password=>"fedora"}>>

> obj.new?
=> true

> obj = obj.save
=> #<Rubydora::DigitalObject:0x1017601b8 @pid="test:1", @repository=#<Rubydora::Repository:0x1018e3058 @config={:url=>"http://localhost:8983/fedora", :user=>"fedoraAdmin", :password=>"fedoraAdmin"}, @client=#<RestClient::Resource:0x101882910 @options={:user=>"fedoraAdmin", :password=>"fedoraAdmin"}, @block=nil, @url="http://localhost:8983/fedora">>>

> obj.profile
=> {"objDissIndexViewURL"=>"http://localhost:8983/fedora/get/test:1/fedora-system:3/viewMethodIndex", "objLabel"=>"", "objModels"=>"info:fedora/fedora-system:FedoraObject-3.0", "objCreateDate"=>"2011-04-18T13:34:11.285Z", "objOwnerId"=>"fedoraAdmin", "objState"=>"A", "objItemIndexViewURL"=>"http://localhost:8983/fedora/get/test:1/fedora-system:3/viewItemIndex", "objLastModDate"=>"2011-04-18T13:47:30.110Z"}

> obj.models
=> ["info:fedora/fedora-system:FedoraObject-3.0"]

> obj.models << 'info:fedora/test:cmodel'
=> ["info:fedora/fedora-system:FedoraObject-3.0", "info:fedora/test:cmodel"]

> obj2 = repo.find('test:2')
=> [...]

> obj1.parts << obj2
=> [...]

> obj.datastreams
=> {"DC"=>#<Rubydora::Datastream:0x101860180 @dsid="DC" ...> }

> ds = obj.datastreams['File']
=> #<Rubydora::Datastream:0x1017f26a8 @dsid="File" ...>
> ds.controlGroup = 'R'
=> "R"
> ds.dsLocation = 'http://example.org/index.html'
=> "http://example.org/index.html"
> ds.dsLabel = 'Example redirect datastream'
=> "Example redirect datastream"
> ds.mimeType = 'text/html'
=> "text/html"
> ds.save
=> #<Rubydora::Datastream:0x10177a568 @dsid="File" ...>

> obj.datastreams
=> {"DC"=>#<Rubydora::Datastream:0x101860180 @dsid="DC" ..., "File"=>#<Rubydora::Datastream:0x10177a568 @dsid="File" ...>}

> obj.datastreams["File"].delete
=> true
> obj.datastreams["File"].new?
=> true

Running the Tests

There is a Dockerfile included here to build a container that runs fcrepo3. It will listen on port 8983, so no additional configuration is required. You can run the continuous integration suite or the specs directly. An example of starting the server and running just the specs is included here:

docker build -t samvera/fcrepo3:latest .
RUBYDORA_ID=$(docker run -d -p 8983:8983 samvera/fcrepo3:latest)
bundle exec rspec && docker kill $RUBYDORA_ID

There are also Rake tasks for building the image and running the suite against a container:

bundle exec rake docker:build
bundle exec rake docker:spec

Contributing to rubydora

Copyright

Copyright (c) 2011 Chris Beer. See LICENSE.txt for further details.

Acknowledgments

This software has been developed by and is brought to you by the Samvera community. Learn more at the Samvera website.

Samvera Logo

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/samvera/rubydora/.