ShareNotify
Provides basic tools for creating documents to send to SHARENotify's Push API as well as query for documents using SHARE Search.
Installation
Add this line to your application's Gemfile:
gem 'share_notify'
And then execute:
$ bundle
Or install it yourself as:
$ gem install share_notify
Usage
Configuration
In order to push data to Share, you will need a token from OSF. Once obtained, you'll put this in a config folder
in your Rails application or project as config/share_notify.yml
:
---
host: "https://osf.io"
token: "MY_TOKEN"
Pushing Data
First, create a PushDocument
with the required metadata:
> document = ShareNotify::PushDocument.new("http://my.document.id/1234")
> document.title = "Some Title"
> document.add_contributor(name: "My Name", email: "[email protected]")
> document.valid?
=> true
Then send the document to Share using the API
class:
api = ShareNotify::API.new
api.post(document.to_share.to_json)
Deleting Data
Same as above, but adding an additional "delete" property informs the Share API that this document should be delete from the Search API:
> document = ShareNotify::PushDocument.new("http://my.document.id/1234")
> document.title = "Some Title"
> document.add_contributor(name: "My Name", email: "[email protected]")
> document.delete
> api = ShareNotify::API.new
> api.post(document.to_share.to_json)
Querying
You can query Share's Search API using the terms outlined in https://osf.io/dajtq/wiki/SHARE%20Search
api = ShareNotify::API.new
api.search([query terms])
Extending Your Classes
Assuming your data class has a #url
method, and that url is used to create the initial PushDocument
that's sent to Share, you can include ShareNotify::Metadata
to query Share and determine
if the document is already present in ShareNotify's Search API.
class MyDataClass
include ShareNotify::Metadata
def url
"http://my.document.id/1234"
end
end
> document = MyDataClass.find("1234")
> document.share_notified?
=> true
Note: It may take 24 hours or more before documents that have been initially pushed to Share will appear in or be deleted from the Search API.
Contributing
Hydra Developers
For Hydra developers, or anyone with a signed CLA, please clone the repo and submit PRs via feature branches. If you don't have rights to projecthydra-labs and do have a signed CLA, please send a note to [email protected].
- Clone it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Non-Hydra Developers
Anyone is welcome to use this software and report issues.
In order to merge any work contributed, you'll need to sign a contributor license agreement.
For more information on signing a CLA, please contact [email protected]
Project Hydra
This software has been developed by and is brought to you by the Hydra community. Learn more at the Project Hydra website