dspace_rest_client 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/dspace_client.rb +64 -64
- data/lib/dspace_rest_client.rb +17 -17
- data/lib/dspacerest/bitstream.rb +51 -51
- data/lib/dspacerest/builders/hash_builder.rb +18 -16
- data/lib/dspacerest/builders/model_builder.rb +61 -61
- data/lib/dspacerest/collection.rb +60 -60
- data/lib/dspacerest/community.rb +57 -57
- data/lib/dspacerest/item.rb +70 -71
- data/lib/dspacerest/metadata.rb +17 -17
- data/lib/dspacerest/policy.rb +41 -41
- data/lib/dspacerest/repositories/abstract_repository.rb +37 -20
- data/lib/dspacerest/repositories/bitstream_repository.rb +62 -58
- data/lib/dspacerest/repositories/collection_repository.rb +78 -73
- data/lib/dspacerest/repositories/community_repository.rb +76 -72
- data/lib/dspacerest/repositories/dspace_repository.rb +26 -26
- data/lib/dspacerest/repositories/item_repository.rb +80 -76
- data/lib/dspacerest/strategies/uploads/curl_strategy.rb +26 -26
- data/lib/dspacerest/strategies/uploads/rest_strategy.rb +16 -16
- metadata +4 -4
data/lib/dspacerest/community.rb
CHANGED
@@ -1,57 +1,57 @@
|
|
1
|
-
module DSpaceRest
|
2
|
-
class Community
|
3
|
-
|
4
|
-
attr_accessor :name, :logo, :copyright_text,
|
5
|
-
:introductory_text, :short_description, :sidebar_text
|
6
|
-
|
7
|
-
attr_reader :id, :handle, :type, :link, :parent_community,
|
8
|
-
:count_items, :sub_communities, :collections, :expand
|
9
|
-
|
10
|
-
def initialize(args={})
|
11
|
-
@id = args['id']
|
12
|
-
@name = args['name']
|
13
|
-
@handle = args['handle']
|
14
|
-
@type = args['type']
|
15
|
-
@link = args['link']
|
16
|
-
@logo = args['logo']
|
17
|
-
@parent_community = DSpaceRest::Community.new(args['parentCommunity']) unless args['parentCommunity'].nil?
|
18
|
-
@copyright_text = args['copyrightText']
|
19
|
-
@introductory_text = args['introductoryText']
|
20
|
-
@short_description = args['shortDescription']
|
21
|
-
@sidebar_text = args['sidebarText']
|
22
|
-
@count_items = args['countItems']
|
23
|
-
@sub_communities = DSpaceRest::Builders::ModelBuilder.build_communities(args['subcommunities'])
|
24
|
-
@collections = DSpaceRest::Builders::ModelBuilder.build_collections(args['collections'])
|
25
|
-
@expand = args['expand']
|
26
|
-
end
|
27
|
-
|
28
|
-
def to_h
|
29
|
-
h = {
|
30
|
-
id: @id,
|
31
|
-
name: @name,
|
32
|
-
handle: @handle,
|
33
|
-
type: @type,
|
34
|
-
link: @link,
|
35
|
-
logo: @logo,
|
36
|
-
parentCommunity: @parent_community,
|
37
|
-
subcommunities: obj2hash(@sub_communities),
|
38
|
-
collections: obj2hash(@collections),
|
39
|
-
copyrightText: @copyright_text,
|
40
|
-
introductoryText: @introductory_text,
|
41
|
-
shortDescription: @short_description,
|
42
|
-
sidebarText: @sidebar_text,
|
43
|
-
countItems: @count_items,
|
44
|
-
expand: @expand
|
45
|
-
}
|
46
|
-
|
47
|
-
h
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def obj2hash(list)
|
53
|
-
DSpaceRest::Builders::HashBuilder.models2hash list
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
57
|
-
end
|
1
|
+
module DSpaceRest
|
2
|
+
class Community
|
3
|
+
|
4
|
+
attr_accessor :name, :logo, :copyright_text,
|
5
|
+
:introductory_text, :short_description, :sidebar_text
|
6
|
+
|
7
|
+
attr_reader :id, :handle, :type, :link, :parent_community,
|
8
|
+
:count_items, :sub_communities, :collections, :expand
|
9
|
+
|
10
|
+
def initialize(args={})
|
11
|
+
@id = args['id']
|
12
|
+
@name = args['name']
|
13
|
+
@handle = args['handle']
|
14
|
+
@type = args['type']
|
15
|
+
@link = args['link']
|
16
|
+
@logo = args['logo']
|
17
|
+
@parent_community = DSpaceRest::Community.new(args['parentCommunity']) unless args['parentCommunity'].nil?
|
18
|
+
@copyright_text = args['copyrightText']
|
19
|
+
@introductory_text = args['introductoryText']
|
20
|
+
@short_description = args['shortDescription']
|
21
|
+
@sidebar_text = args['sidebarText']
|
22
|
+
@count_items = args['countItems']
|
23
|
+
@sub_communities = DSpaceRest::Builders::ModelBuilder.build_communities(args['subcommunities'])
|
24
|
+
@collections = DSpaceRest::Builders::ModelBuilder.build_collections(args['collections'])
|
25
|
+
@expand = args['expand']
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_h
|
29
|
+
h = {
|
30
|
+
id: @id,
|
31
|
+
name: @name,
|
32
|
+
handle: @handle,
|
33
|
+
type: @type,
|
34
|
+
link: @link,
|
35
|
+
logo: @logo,
|
36
|
+
parentCommunity: @parent_community,
|
37
|
+
subcommunities: obj2hash(@sub_communities),
|
38
|
+
collections: obj2hash(@collections),
|
39
|
+
copyrightText: @copyright_text,
|
40
|
+
introductoryText: @introductory_text,
|
41
|
+
shortDescription: @short_description,
|
42
|
+
sidebarText: @sidebar_text,
|
43
|
+
countItems: @count_items,
|
44
|
+
expand: @expand
|
45
|
+
}
|
46
|
+
|
47
|
+
h
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def obj2hash(list)
|
53
|
+
DSpaceRest::Builders::HashBuilder.models2hash list
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
data/lib/dspacerest/item.rb
CHANGED
@@ -1,71 +1,70 @@
|
|
1
|
-
require 'curb'
|
2
|
-
|
3
|
-
module DSpaceRest
|
4
|
-
class Item
|
5
|
-
|
6
|
-
attr_accessor :name, :archived, :withdrawn
|
7
|
-
|
8
|
-
attr_reader :id, :handle, :type, :link, :last_modified, :parent_collection,
|
9
|
-
:parent_collection_list, :parent_community_list, :bit_streams,
|
10
|
-
:expand, :metadata
|
11
|
-
|
12
|
-
def initialize args
|
13
|
-
@id = args['id']
|
14
|
-
@name = args['name']
|
15
|
-
@handle = args['handle']
|
16
|
-
@type = args['type']
|
17
|
-
@link = args['link']
|
18
|
-
@last_modified = args['lastModified']
|
19
|
-
@parent_collection = DSpaceRest::Collection.new(args['parentCollection']) unless args['parentCollection'].nil?
|
20
|
-
@parent_collection_list = DSpaceRest::Builders::ModelBuilder.build_collections(args['parentCollectionList'])
|
21
|
-
@parent_community_list = DSpaceRest::Builders::ModelBuilder.build_communities(args['parentCommunityList'])
|
22
|
-
@bit_streams = DSpaceRest::Builders::ModelBuilder.build_bitstreams(args['bitstreams'])
|
23
|
-
@archived = args['archived']
|
24
|
-
@withdrawn = args['withdrawn']
|
25
|
-
@expand = args['expand']
|
26
|
-
@metadata = DSpaceRest::Builders::ModelBuilder.build_metadatas(args['metadata'])
|
27
|
-
end
|
28
|
-
|
29
|
-
def to_h
|
30
|
-
h = {
|
31
|
-
id: @id,
|
32
|
-
name: @name,
|
33
|
-
handle: @handle,
|
34
|
-
type: @type,
|
35
|
-
link: @link,
|
36
|
-
lastModified: @last_modified,
|
37
|
-
parentCollection: @parent_collection.to_h,
|
38
|
-
parentCollectionList: obj2hash(@parent_collection_list),
|
39
|
-
parentCommunityList: obj2hash(@parent_community_list),
|
40
|
-
bitstreams: obj2hash(@bit_streams),
|
41
|
-
archived: @archived,
|
42
|
-
withdrawn: @withdrawn,
|
43
|
-
expand: @expand,
|
44
|
-
metadata: obj2hash(@metadata)
|
45
|
-
}
|
46
|
-
|
47
|
-
h
|
48
|
-
end
|
49
|
-
|
50
|
-
def add_metadata(key, value, language)
|
51
|
-
m = {}
|
52
|
-
m['key'] = key
|
53
|
-
m['value'] = value
|
54
|
-
m['language'] = language || ""
|
55
|
-
|
56
|
-
@metadata
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
end
|
1
|
+
require 'curb'
|
2
|
+
|
3
|
+
module DSpaceRest
|
4
|
+
class Item
|
5
|
+
|
6
|
+
attr_accessor :name, :archived, :withdrawn
|
7
|
+
|
8
|
+
attr_reader :id, :handle, :type, :link, :last_modified, :parent_collection,
|
9
|
+
:parent_collection_list, :parent_community_list, :bit_streams,
|
10
|
+
:expand, :metadata
|
11
|
+
|
12
|
+
def initialize args
|
13
|
+
@id = args['id']
|
14
|
+
@name = args['name']
|
15
|
+
@handle = args['handle']
|
16
|
+
@type = args['type']
|
17
|
+
@link = args['link']
|
18
|
+
@last_modified = args['lastModified']
|
19
|
+
@parent_collection = DSpaceRest::Collection.new(args['parentCollection']) unless args['parentCollection'].nil?
|
20
|
+
@parent_collection_list = DSpaceRest::Builders::ModelBuilder.build_collections(args['parentCollectionList']) || []
|
21
|
+
@parent_community_list = DSpaceRest::Builders::ModelBuilder.build_communities(args['parentCommunityList']) || []
|
22
|
+
@bit_streams = DSpaceRest::Builders::ModelBuilder.build_bitstreams(args['bitstreams']) || []
|
23
|
+
@archived = args['archived']
|
24
|
+
@withdrawn = args['withdrawn']
|
25
|
+
@expand = args['expand']
|
26
|
+
@metadata = DSpaceRest::Builders::ModelBuilder.build_metadatas(args['metadata']) || []
|
27
|
+
end
|
28
|
+
|
29
|
+
def to_h
|
30
|
+
h = {
|
31
|
+
id: @id,
|
32
|
+
name: @name,
|
33
|
+
handle: @handle,
|
34
|
+
type: @type,
|
35
|
+
link: @link,
|
36
|
+
lastModified: @last_modified,
|
37
|
+
parentCollection: @parent_collection.to_h,
|
38
|
+
parentCollectionList: obj2hash(@parent_collection_list),
|
39
|
+
parentCommunityList: obj2hash(@parent_community_list),
|
40
|
+
bitstreams: obj2hash(@bit_streams),
|
41
|
+
archived: @archived,
|
42
|
+
withdrawn: @withdrawn,
|
43
|
+
expand: @expand,
|
44
|
+
metadata: obj2hash(@metadata)
|
45
|
+
}
|
46
|
+
|
47
|
+
h
|
48
|
+
end
|
49
|
+
|
50
|
+
def add_metadata(key, value, language)
|
51
|
+
m = {}
|
52
|
+
m['key'] = key
|
53
|
+
m['value'] = value
|
54
|
+
m['language'] = language || ""
|
55
|
+
@metadata << DSpaceRest::Metadata.new(m)
|
56
|
+
@metadata
|
57
|
+
end
|
58
|
+
|
59
|
+
def reset_metadata
|
60
|
+
@metadata = []
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def obj2hash(list)
|
66
|
+
DSpaceRest::Builders::HashBuilder.models2hash list
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
end
|
data/lib/dspacerest/metadata.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
|
-
module DSpaceRest
|
2
|
-
class Metadata
|
3
|
-
|
4
|
-
attr_accessor :key, :value, :language
|
5
|
-
|
6
|
-
def initialize args
|
7
|
-
@key = args['key']
|
8
|
-
@value = args['value']
|
9
|
-
@language = args['language'] || nil
|
10
|
-
end
|
11
|
-
|
12
|
-
def to_h
|
13
|
-
{key: @key, value: @value, language: @language}
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
1
|
+
module DSpaceRest
|
2
|
+
class Metadata
|
3
|
+
|
4
|
+
attr_accessor :key, :value, :language
|
5
|
+
|
6
|
+
def initialize args
|
7
|
+
@key = args['key']
|
8
|
+
@value = args['value']
|
9
|
+
@language = args['language'] || nil
|
10
|
+
end
|
11
|
+
|
12
|
+
def to_h
|
13
|
+
{key: @key, value: @value, language: @language}
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
data/lib/dspacerest/policy.rb
CHANGED
@@ -1,41 +1,41 @@
|
|
1
|
-
module DSpaceRest
|
2
|
-
class Policy
|
3
|
-
|
4
|
-
attr_reader :id, :action, :eperson_id, :group_id,
|
5
|
-
:resource_id, :resource_type, :rp_description,
|
6
|
-
:rp_name, :rp_type, :start_date, :end_date
|
7
|
-
|
8
|
-
def initialize args
|
9
|
-
@id = args['id']
|
10
|
-
@action = args['action']
|
11
|
-
@eperson_id = args['epersonId']
|
12
|
-
@group_id = args['groupId']
|
13
|
-
@resource_id = args['resourceId']
|
14
|
-
@resource_type = args['resourceType']
|
15
|
-
@rp_description = args['rpDescription']
|
16
|
-
@rp_name = args['rpName']
|
17
|
-
@rp_type = args['rpType']
|
18
|
-
@start_date = args['startDate']
|
19
|
-
@end_date = args['endDate']
|
20
|
-
end
|
21
|
-
|
22
|
-
def to_h
|
23
|
-
h = {
|
24
|
-
id: @id,
|
25
|
-
action: @action,
|
26
|
-
epersonId: @eperson_id,
|
27
|
-
groupId: @group_id,
|
28
|
-
resourceId: @resource_id,
|
29
|
-
resourceType: @resource_type,
|
30
|
-
rpDescription: @rp_description,
|
31
|
-
rpName: @rp_name,
|
32
|
-
rpType: @rp_type,
|
33
|
-
startDate: @start_date,
|
34
|
-
endDate: @end_date
|
35
|
-
}
|
36
|
-
|
37
|
-
h
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
1
|
+
module DSpaceRest
|
2
|
+
class Policy
|
3
|
+
|
4
|
+
attr_reader :id, :action, :eperson_id, :group_id,
|
5
|
+
:resource_id, :resource_type, :rp_description,
|
6
|
+
:rp_name, :rp_type, :start_date, :end_date
|
7
|
+
|
8
|
+
def initialize args
|
9
|
+
@id = args['id']
|
10
|
+
@action = args['action']
|
11
|
+
@eperson_id = args['epersonId']
|
12
|
+
@group_id = args['groupId']
|
13
|
+
@resource_id = args['resourceId']
|
14
|
+
@resource_type = args['resourceType']
|
15
|
+
@rp_description = args['rpDescription']
|
16
|
+
@rp_name = args['rpName']
|
17
|
+
@rp_type = args['rpType']
|
18
|
+
@start_date = args['startDate']
|
19
|
+
@end_date = args['endDate']
|
20
|
+
end
|
21
|
+
|
22
|
+
def to_h
|
23
|
+
h = {
|
24
|
+
id: @id,
|
25
|
+
action: @action,
|
26
|
+
epersonId: @eperson_id,
|
27
|
+
groupId: @group_id,
|
28
|
+
resourceId: @resource_id,
|
29
|
+
resourceType: @resource_type,
|
30
|
+
rpDescription: @rp_description,
|
31
|
+
rpName: @rp_name,
|
32
|
+
rpType: @rp_type,
|
33
|
+
startDate: @start_date,
|
34
|
+
endDate: @end_date
|
35
|
+
}
|
36
|
+
|
37
|
+
h
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -1,20 +1,37 @@
|
|
1
|
-
module DSpaceRest
|
2
|
-
module Repositories
|
3
|
-
class AbstractRepository
|
4
|
-
attr_reader :rest_client
|
5
|
-
|
6
|
-
def initialize(rest_client)
|
7
|
-
@rest_client = rest_client
|
8
|
-
end
|
9
|
-
|
10
|
-
protected
|
11
|
-
|
12
|
-
def
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
1
|
+
module DSpaceRest
|
2
|
+
module Repositories
|
3
|
+
class AbstractRepository
|
4
|
+
attr_reader :rest_client
|
5
|
+
|
6
|
+
def initialize(rest_client)
|
7
|
+
@rest_client = rest_client
|
8
|
+
end
|
9
|
+
|
10
|
+
protected
|
11
|
+
|
12
|
+
def build_query_string(params)
|
13
|
+
|
14
|
+
query_string=""
|
15
|
+
|
16
|
+
if query_parameters.include? 'limit'
|
17
|
+
query_string << "limit=#{params[:limit]}&"
|
18
|
+
end
|
19
|
+
|
20
|
+
if query_parameters.include? 'offset'
|
21
|
+
query_string << "offset=#{params[:offset]}&"
|
22
|
+
end
|
23
|
+
|
24
|
+
expand_string = ""
|
25
|
+
params[:expand].each do |expand|
|
26
|
+
if expandable_properties.include? expand
|
27
|
+
expand_string << "#{expand},"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
query_string << "expand=#{expand_string}"
|
31
|
+
|
32
|
+
query_string
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -1,58 +1,62 @@
|
|
1
|
-
module DSpaceRest
|
2
|
-
module Repositories
|
3
|
-
class BitstreamRepository < AbstractRepository
|
4
|
-
|
5
|
-
# Bitstreams are files. They have a filename, size (in bytes), and a file format.
|
6
|
-
# Typically in DSpace, the Bitstream will the "full text" article, or some other media.
|
7
|
-
# Some files are the actual file that was uploaded (tagged with bundleName:ORIGINAL),
|
8
|
-
# others are DSpace-generated files that are derivatives or renditions, such as text-extraction, or thumbnails.
|
9
|
-
# You can download files/bitstreams.
|
10
|
-
# DSpace doesn't really limit the type of files that it takes in, so this could be PDF, JPG, audio, video, zip,
|
11
|
-
# or other.
|
12
|
-
# Also, the logo for a Collection or a Community, is also a Bitstream.
|
13
|
-
|
14
|
-
# √ GET /bitstreams - Return all bitstreams in DSpace.
|
15
|
-
# √ GET /bitstreams/{bitstream id} - Return bitstream.
|
16
|
-
# GET /bitstreams/{bitstream id}/policy - Return bitstream policies.
|
17
|
-
# √ GET /bitstreams/{bitstream id}/retrieve - Return data of bitstream.
|
18
|
-
# POST /bitstreams/{bitstream id}/policy - Add policy to item. You must post a ResourcePolicy
|
19
|
-
# PUT /bitstreams/{bitstream id}/data - Update data/file of bitstream. You must put the data
|
20
|
-
# √ PUT /bitstreams/{bitstream id} - Update metadata of bitstream. You must put a Bitstream, does not alter the file/data
|
21
|
-
# DELETE /bitstreams/{bitstream id} - Delete bitstream from DSpace.
|
22
|
-
# DELETE /bitstreams/{bitstream id}/policy/{policy_id} - Delete bitstream policy.
|
23
|
-
|
24
|
-
def get_bitstream_by_id(id,
|
25
|
-
|
26
|
-
response = rest_client["/bitstreams/#{id}?#{
|
27
|
-
DSpaceRest::Bitstream.new(JSON.parse(response))
|
28
|
-
end
|
29
|
-
|
30
|
-
def get_all_bitstreams(
|
31
|
-
|
32
|
-
response = rest_client["/bitstreams?#{
|
33
|
-
bit_streams = []
|
34
|
-
JSON.parse(response).each do |bits|
|
35
|
-
bit_streams << DSpaceRest::Bitstream.new(bits)
|
36
|
-
end
|
37
|
-
bit_streams
|
38
|
-
end
|
39
|
-
|
40
|
-
def retrieve_data(bitstream)
|
41
|
-
response = rest_client["/bitstreams/#{bitstream.id}/retrieve"].get
|
42
|
-
end
|
43
|
-
|
44
|
-
def update(bitstream)
|
45
|
-
valid_keys=[:name, :description, :sequenceId]
|
46
|
-
form = JSON.generate(bitstream.to_h.select { |k, v| valid_keys.include? k })
|
47
|
-
response = rest_client["/bitstreams/#{bitstream.id}"].put form
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def expandable_properties
|
53
|
-
["parent","policies","all"]
|
54
|
-
end
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
end
|
1
|
+
module DSpaceRest
|
2
|
+
module Repositories
|
3
|
+
class BitstreamRepository < AbstractRepository
|
4
|
+
|
5
|
+
# Bitstreams are files. They have a filename, size (in bytes), and a file format.
|
6
|
+
# Typically in DSpace, the Bitstream will the "full text" article, or some other media.
|
7
|
+
# Some files are the actual file that was uploaded (tagged with bundleName:ORIGINAL),
|
8
|
+
# others are DSpace-generated files that are derivatives or renditions, such as text-extraction, or thumbnails.
|
9
|
+
# You can download files/bitstreams.
|
10
|
+
# DSpace doesn't really limit the type of files that it takes in, so this could be PDF, JPG, audio, video, zip,
|
11
|
+
# or other.
|
12
|
+
# Also, the logo for a Collection or a Community, is also a Bitstream.
|
13
|
+
|
14
|
+
# √ GET /bitstreams - Return all bitstreams in DSpace.
|
15
|
+
# √ GET /bitstreams/{bitstream id} - Return bitstream.
|
16
|
+
# GET /bitstreams/{bitstream id}/policy - Return bitstream policies.
|
17
|
+
# √ GET /bitstreams/{bitstream id}/retrieve - Return data of bitstream.
|
18
|
+
# POST /bitstreams/{bitstream id}/policy - Add policy to item. You must post a ResourcePolicy
|
19
|
+
# PUT /bitstreams/{bitstream id}/data - Update data/file of bitstream. You must put the data
|
20
|
+
# √ PUT /bitstreams/{bitstream id} - Update metadata of bitstream. You must put a Bitstream, does not alter the file/data
|
21
|
+
# DELETE /bitstreams/{bitstream id} - Delete bitstream from DSpace.
|
22
|
+
# DELETE /bitstreams/{bitstream id}/policy/{policy_id} - Delete bitstream policy.
|
23
|
+
|
24
|
+
def get_bitstream_by_id(id, params)
|
25
|
+
query_string = build_query_string(params)
|
26
|
+
response = rest_client["/bitstreams/#{id}?#{query_string}"].get
|
27
|
+
DSpaceRest::Bitstream.new(JSON.parse(response))
|
28
|
+
end
|
29
|
+
|
30
|
+
def get_all_bitstreams(params)
|
31
|
+
query_string = build_query_string(params)
|
32
|
+
response = rest_client["/bitstreams?#{query_string}"].get
|
33
|
+
bit_streams = []
|
34
|
+
JSON.parse(response).each do |bits|
|
35
|
+
bit_streams << DSpaceRest::Bitstream.new(bits)
|
36
|
+
end
|
37
|
+
bit_streams
|
38
|
+
end
|
39
|
+
|
40
|
+
def retrieve_data(bitstream)
|
41
|
+
response = rest_client["/bitstreams/#{bitstream.id}/retrieve"].get
|
42
|
+
end
|
43
|
+
|
44
|
+
def update(bitstream)
|
45
|
+
valid_keys=[:name, :description, :sequenceId]
|
46
|
+
form = JSON.generate(bitstream.to_h.select { |k, v| valid_keys.include? k })
|
47
|
+
response = rest_client["/bitstreams/#{bitstream.id}"].put form
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def expandable_properties
|
53
|
+
["parent","policies","all"]
|
54
|
+
end
|
55
|
+
|
56
|
+
def query_parameters
|
57
|
+
["limit","offset"]
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|