Skip to content

Ruby client for interacting with the Scholarsphere REST API

Notifications You must be signed in to change notification settings

psu-libraries/scholarsphere-client

Repository files navigation

Scholarsphere::Client

Ruby client to update and create content in the Scholarsphere repository.

Installation

Add this line to your application's Gemfile:

gem 'scholarsphere-client'

And then execute:

$ bundle

Or install it yourself as:

$ gem install scholarsphere-client

Usage

Authentication

Obtain an api key, and save it to config/scholarsphere-client.yml

SS4_ENDPOINT:  "http://scholarsphere/api/v1"
SS_CLIENT_KEY: "[key]"

If you are using a testing instance, you'll need to disable ssl verification:

SS_CLIENT_SSL: "false"

Ingesting

See the sample.rb file for an executable example.

To publish a work:

metadata = {
  work_type: 'dataset',
  visibility: 'open',
  rights: 'https://creativecommons.org/licenses/by/4.0/',
  title: 'Sample Title',
  description: "This is a sample work",
  published_date: '2010-01-01',
  creators: [
    { orcid: '0000-0000-1111-222X' },
    { psu_id: 'axb123' },
    { display_name: 'Dr. Unidentified Creator' }
  ]
}

files = [
  Pathname.new("/path/to/file1.txt"),
  Pathname.new("/path/to/file2.txt")
]

ingest = Scholarsphere::Client::Ingest.new(
  metadata: metadata,
  files: files,
  depositor: 'axb123'
)

response = ingest.publish

puts response.body

The json output should look like:

{ 
  "message": "Work was successfully created",
  "url": "/resources/0797e99c-7d4f-4e05-8bf6-86aea1029a6a"
}

Documentation

You can read the ruby docs for the latest features.

Testing

Using an Existing Deployment

RSpec tests are run against saved API responses that are recorded using the VCR gem. If we want to run the test suite against a live instance to see if our client works against a given deployment, update the endpoint in config/scholarsphere-client.yml and run:

DISABLE_VCR=true bundle exec rspec

Updating VCR Files

Simply removing the existing VCR files should be enough to update all the responses. If no yaml file exists for a given test, VCR will record a new one. Be sure to clean up files afterwards using bin/clean-vcr-files which will remove unnecessary binary data from the responses:

rm -Rf spec/fixtures/vcr_cassettes
bundle exec rspec
bin/clean-vcr-files