Module: Rubydora::RestApiClient
- Included in:
- Repository
- Defined in:
- lib/rubydora/rest_api_client.rb,
lib/rubydora/rest_api_client/v33.rb
Overview
Provide low-level access to the Fedora Commons REST API
Defined Under Namespace
Modules: V33
Constant Summary collapse
- API_DOCUMENTATION =
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
'https://wiki.duraspace.org/display/FCR30/REST+API'
Instance Method Summary collapse
-
#add_datastream(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#add_relationship(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#client(config = {}) ⇒ RestClient::Resource
Create an authorized HTTP client for the Fedora REST API.
-
#datastream(options = {}) ⇒ String
(also: #datastreams)
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#datastream_dissemination(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#datastream_url(pid, dsid = nil, options = nil) ⇒ String
Generate a base datastream REST API endpoint URI.
-
#datastream_versions(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#dissemination(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#dissemination_url(pid, sdef = nil, method = nil, options = nil) ⇒ String
Generate a base object dissemination REST API endpoint URI.
-
#find_objects(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#ingest(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#modify_datastream(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#modify_object(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#next_pid(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#object(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#object_url(pid = nil, options = nil) ⇒ String
Generate a base object REST API endpoint URI.
-
#object_versions(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#object_xml(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#purge_datastream(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#purge_object(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#purge_relationship(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#relationships(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#set_datastream_options(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
-
#url_for(base, options = nil) ⇒ String
Generate a REST API compatible URI.
Instance Method Details
#add_datastream(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
151 152 153 154 155 156 157 |
# File 'lib/rubydora/rest_api_client.rb', line 151 def add_datastream = {} pid = .delete(:pid) dsid = .delete(:dsid) file = .delete(:content) content_type = .delete(:content_type) || [:mimeType] || (MIME::Types.type_for(file.path).first if file.respond_to? :path) || 'text/plain' client[datastream_url(pid, dsid, )].post file, :content_type => content_type.to_s, :multipart => true end |
#add_relationship(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
198 199 200 201 |
# File 'lib/rubydora/rest_api_client.rb', line 198 def add_relationship = {} pid = .delete(:pid) || [:subject] client[url_for(object_url(pid) + "/relationships/new", )].post nil end |
#client(config = {}) ⇒ RestClient::Resource
Create an authorized HTTP client for the Fedora REST API
13 14 15 16 |
# File 'lib/rubydora/rest_api_client.rb', line 13 def client config = {} config = self.config.merge(config) @client ||= RestClient::Resource.new(config[:url], :user => config[:user], :password => config[:password], :timeout => config[:timeout], :open_timeout => config[:timeout]) end |
#datastream(options = {}) ⇒ String Also known as: datastreams
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
101 102 103 104 105 106 |
# File 'lib/rubydora/rest_api_client.rb', line 101 def datastream = {} pid = .delete(:pid) dsid = .delete(:dsid) [:format] ||= 'xml' client[datastream_url(pid, dsid, )].get end |
#datastream_dissemination(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
139 140 141 142 143 144 |
# File 'lib/rubydora/rest_api_client.rb', line 139 def datastream_dissemination = {} pid = .delete(:pid) dsid = .delete(:dsid) raise "" unless dsid client[url_for(datastream_url(pid, dsid) + "/content", )].get end |
#datastream_url(pid, dsid = nil, options = nil) ⇒ String
Generate a base datastream REST API endpoint URI
259 260 261 262 |
# File 'lib/rubydora/rest_api_client.rb', line 259 def datastream_url pid, dsid = nil, = nil raise "" unless pid url_for(object_url(pid) + "/datastreams" + (("/#{CGI::escape(dsid)}" if dsid) || ''), ) end |
#datastream_versions(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
126 127 128 129 130 131 132 |
# File 'lib/rubydora/rest_api_client.rb', line 126 def datastream_versions = {} pid = .delete(:pid) dsid = .delete(:dsid) raise ArgumentError, "Must supply dsid" unless dsid [:format] ||= 'xml' client[url_for(datastream_url(pid, dsid) + "/versions", )].get end |
#dissemination(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
218 219 220 221 222 223 224 |
# File 'lib/rubydora/rest_api_client.rb', line 218 def dissemination = {} pid = .delete(:pid) sdef = .delete(:sdef) method = .delete(:method) [:format] ||= 'xml' unless pid and sdef and method client[dissemination_url(pid,sdef,method,)].get end |
#dissemination_url(pid, sdef = nil, method = nil, options = nil) ⇒ String
Generate a base object dissemination REST API endpoint URI
249 250 251 252 |
# File 'lib/rubydora/rest_api_client.rb', line 249 def dissemination_url pid, sdef = nil, method = nil, = nil raise "" unless pid url_for(object_url(pid) + "/methods" + (("/#{CGI::escape(sdef)}" if sdef) || '') + (("/#{CGI::escape(method)}" if method) || ''), ) end |
#find_objects(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
29 30 31 32 33 34 |
# File 'lib/rubydora/rest_api_client.rb', line 29 def find_objects = {} raise "" if [:terms] and [:query] [:resultFormat] ||= 'xml' client[object_url(nil, )].get end |
#ingest(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
50 51 52 53 54 |
# File 'lib/rubydora/rest_api_client.rb', line 50 def ingest = {} pid = .delete(:pid) || 'new' file = .delete(:file) client[object_url(pid, )].post file, :content_type => 'text/xml' end |
#modify_datastream(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
164 165 166 167 168 169 170 |
# File 'lib/rubydora/rest_api_client.rb', line 164 def modify_datastream = {} pid = .delete(:pid) dsid = .delete(:dsid) file = .delete(:content) content_type = .delete(:content_type) || [:mimeType] || (MIME::Types.type_for(file.path).first if file.respond_to? :path) || 'text/plain' client[datastream_url(pid, dsid, )].put file, :content_type => content_type.to_s, :multipart => true end |
#modify_object(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
60 61 62 63 |
# File 'lib/rubydora/rest_api_client.rb', line 60 def modify_object = {} pid = .delete(:pid) client[object_url(pid, )].put nil end |
#next_pid(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
21 22 23 24 |
# File 'lib/rubydora/rest_api_client.rb', line 21 def next_pid = {} [:format] ||= 'xml' client[url_for(object_url() + "/nextPID", )].post nil end |
#object(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
40 41 42 43 44 |
# File 'lib/rubydora/rest_api_client.rb', line 40 def object = {} pid = .delete(:pid) [:format] ||= 'xml' client[object_url(pid, )].get end |
#object_url(pid = nil, options = nil) ⇒ String
Generate a base object REST API endpoint URI
239 240 241 |
# File 'lib/rubydora/rest_api_client.rb', line 239 def object_url pid = nil, = nil url_for("objects" + (("/#{CGI::escape(pid.to_s.gsub('info:fedora/', ''))}" if pid) || ''), ) end |
#object_versions(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
78 79 80 81 82 83 |
# File 'lib/rubydora/rest_api_client.rb', line 78 def object_versions = {} pid = .delete(:pid) [:format] ||= 'xml' raise "" unless pid client[url_for(object_url(pid) + "/versions", )].get end |
#object_xml(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
89 90 91 92 93 94 |
# File 'lib/rubydora/rest_api_client.rb', line 89 def object_xml = {} pid = .delete(:pid) raise "" unless pid [:format] ||= 'xml' client[url_for(object_url(pid) + "/objectXML", )].get end |
#purge_datastream(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
177 178 179 180 181 |
# File 'lib/rubydora/rest_api_client.rb', line 177 def purge_datastream = {} pid = .delete(:pid) dsid = .delete(:dsid) client[datastream_url(pid, dsid, )].delete end |
#purge_object(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
69 70 71 72 |
# File 'lib/rubydora/rest_api_client.rb', line 69 def purge_object = {} pid = .delete(:pid) client[object_url(pid, )].delete end |
#purge_relationship(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
207 208 209 210 |
# File 'lib/rubydora/rest_api_client.rb', line 207 def purge_relationship = {} pid = .delete(:pid) || [:subject] client[url_for(object_url(pid) + "/relationships", )].delete end |
#relationships(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
187 188 189 190 191 192 |
# File 'lib/rubydora/rest_api_client.rb', line 187 def relationships = {} pid = .delete(:pid) || [:subject] raise "" unless pid [:format] ||= 'xml' client[url_for(object_url(pid) + "/relationships", )].get end |
#set_datastream_options(options = {}) ⇒ String
Fedora API documentation available at https://wiki.duraspace.org/display/FCR30/REST+API
115 116 117 118 119 |
# File 'lib/rubydora/rest_api_client.rb', line 115 def = {} pid = .delete(:pid) dsid = .delete(:dsid) client[datastream_url(pid, dsid, )].put nil end |
#url_for(base, options = nil) ⇒ String
Generate a REST API compatible URI
230 231 232 233 |
# File 'lib/rubydora/rest_api_client.rb', line 230 def url_for base, = nil return base unless .is_a? Hash "#{base}" + (("?#{.map { |key, value| "#{CGI::escape(key.to_s)}=#{CGI::escape(value.to_s)}"}.join("&") }" if and not .empty?) || '') end |