puree 0.15.0 → 0.16.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/CHANGELOG.md +12 -2
- data/README.md +8 -2
- data/lib/puree/collection.rb +30 -21
- data/lib/puree/configuration.rb +1 -1
- data/lib/puree/dataset.rb +235 -162
- data/lib/puree/download.rb +21 -16
- data/lib/puree/event.rb +68 -34
- data/lib/puree/journal.rb +15 -7
- data/lib/puree/organisation.rb +95 -61
- data/lib/puree/person.rb +67 -39
- data/lib/puree/project.rb +100 -55
- data/lib/puree/publication.rb +118 -63
- data/lib/puree/publisher.rb +15 -9
- data/lib/puree/resource.rb +23 -24
- data/lib/puree/server.rb +24 -16
- data/lib/puree/version.rb +1 -1
- data/puree.gemspec +1 -1
- data/spec/collection.rb +4 -4
- data/spec/dataset.rb +6 -6
- metadata +4 -4
data/lib/puree/publisher.rb
CHANGED
@@ -4,25 +4,31 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Publisher < Resource
|
6
6
|
|
7
|
-
# @param
|
8
|
-
# @param
|
9
|
-
# @param
|
10
|
-
# @param
|
11
|
-
def initialize(
|
7
|
+
# @param base_url [String]
|
8
|
+
# @param username [String]
|
9
|
+
# @param password [String]
|
10
|
+
# @param basic_auth [Boolean]
|
11
|
+
def initialize(base_url: nil, username: nil, password: nil, basic_auth: nil)
|
12
12
|
super(api: :publisher,
|
13
|
-
|
13
|
+
base_url: base_url,
|
14
14
|
username: username,
|
15
15
|
password: password,
|
16
16
|
basic_auth: basic_auth)
|
17
17
|
end
|
18
18
|
|
19
|
-
|
20
|
-
|
21
19
|
# All metadata
|
22
20
|
#
|
23
21
|
# @return [Hash]
|
24
22
|
def metadata
|
25
|
-
|
23
|
+
@metadata
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def combine_metadata
|
30
|
+
o = super
|
31
|
+
@metadata = o
|
26
32
|
end
|
27
33
|
|
28
34
|
end
|
data/lib/puree/resource.rb
CHANGED
@@ -7,20 +7,20 @@ module Puree
|
|
7
7
|
attr_reader :response
|
8
8
|
|
9
9
|
# @param api [String]
|
10
|
-
# @param
|
11
|
-
# @param
|
12
|
-
# @param
|
13
|
-
# @param
|
14
|
-
# @param
|
10
|
+
# @param base_url [String]
|
11
|
+
# @param username [String]
|
12
|
+
# @param password [String]
|
13
|
+
# @param bleeding [Boolean]
|
14
|
+
# @param basic_auth [Boolean]
|
15
15
|
def initialize( api: nil,
|
16
|
-
|
16
|
+
base_url: nil,
|
17
17
|
username: nil,
|
18
18
|
password: nil,
|
19
19
|
bleeding: true,
|
20
20
|
basic_auth: nil)
|
21
21
|
@resource_type = api
|
22
22
|
@api_map = Puree::Map.new.get
|
23
|
-
@
|
23
|
+
@base_url = base_url.nil? ? Puree.base_url : base_url
|
24
24
|
@latest_api = bleeding
|
25
25
|
@basic_auth = basic_auth.nil? ? Puree.basic_auth : basic_auth
|
26
26
|
if @basic_auth === true
|
@@ -55,7 +55,7 @@ module Puree
|
|
55
55
|
end
|
56
56
|
|
57
57
|
# strip any trailing slash
|
58
|
-
@
|
58
|
+
@base_url = @base_url.sub(/(\/)+$/, '')
|
59
59
|
|
60
60
|
headers = {}
|
61
61
|
headers['Accept'] = 'application/xml'
|
@@ -94,7 +94,7 @@ module Puree
|
|
94
94
|
puts 'HTTP::Error '+ e.message
|
95
95
|
end
|
96
96
|
|
97
|
-
get_data? ?
|
97
|
+
get_data? ? combine_metadata : {}
|
98
98
|
|
99
99
|
end
|
100
100
|
|
@@ -116,10 +116,14 @@ module Puree
|
|
116
116
|
@content ? @content : {}
|
117
117
|
end
|
118
118
|
|
119
|
+
|
120
|
+
|
121
|
+
private
|
122
|
+
|
119
123
|
# Created (UTC datetime)
|
120
124
|
#
|
121
125
|
# @return [String]
|
122
|
-
def
|
126
|
+
def extract_created
|
123
127
|
path = '/created'
|
124
128
|
xpath_query_for_single_value path
|
125
129
|
end
|
@@ -127,7 +131,7 @@ module Puree
|
|
127
131
|
# Modified (UTC datetime)
|
128
132
|
#
|
129
133
|
# @return [String]
|
130
|
-
def
|
134
|
+
def extract_modified
|
131
135
|
path = '/modified'
|
132
136
|
xpath_query_for_single_value path
|
133
137
|
end
|
@@ -135,7 +139,7 @@ module Puree
|
|
135
139
|
# UUID
|
136
140
|
#
|
137
141
|
# @return [String]
|
138
|
-
def
|
142
|
+
def extract_uuid
|
139
143
|
path = '/@uuid'
|
140
144
|
xpath_query_for_single_value path
|
141
145
|
end
|
@@ -143,19 +147,14 @@ module Puree
|
|
143
147
|
# All metadata
|
144
148
|
#
|
145
149
|
# @return [Hash]
|
146
|
-
def
|
150
|
+
def combine_metadata
|
147
151
|
o = {}
|
148
|
-
o['uuid'] =
|
149
|
-
o['created'] =
|
150
|
-
o['modified'] =
|
152
|
+
o['uuid'] = extract_uuid
|
153
|
+
o['created'] = extract_created
|
154
|
+
o['modified'] = extract_modified
|
151
155
|
o
|
152
156
|
end
|
153
157
|
|
154
|
-
|
155
|
-
|
156
|
-
private
|
157
|
-
|
158
|
-
|
159
158
|
# Is there any data after get? For a response that provides a count of the results.
|
160
159
|
#
|
161
160
|
# @return [Boolean]
|
@@ -194,7 +193,7 @@ module Puree
|
|
194
193
|
else
|
195
194
|
service_api_mode = service + '.current'
|
196
195
|
end
|
197
|
-
@
|
196
|
+
@base_url + '/' + service_api_mode
|
198
197
|
end
|
199
198
|
|
200
199
|
# content based
|
@@ -211,8 +210,8 @@ module Puree
|
|
211
210
|
|
212
211
|
def missing_credentials
|
213
212
|
missing = []
|
214
|
-
if @
|
215
|
-
missing << '
|
213
|
+
if @base_url.nil?
|
214
|
+
missing << 'base_url'
|
216
215
|
end
|
217
216
|
|
218
217
|
if @options[:basic_auth] === true
|
data/lib/puree/server.rb
CHANGED
@@ -6,17 +6,17 @@ module Puree
|
|
6
6
|
|
7
7
|
attr_reader :response
|
8
8
|
|
9
|
-
# @param
|
10
|
-
# @param
|
11
|
-
# @param
|
12
|
-
# @param
|
13
|
-
def initialize(
|
9
|
+
# @param base_url [String]
|
10
|
+
# @param username [String]
|
11
|
+
# @param password [String]
|
12
|
+
# @param basic_auth [Boolean]
|
13
|
+
def initialize(base_url: nil,
|
14
14
|
username: nil,
|
15
15
|
password: nil,
|
16
16
|
basic_auth: nil)
|
17
17
|
@resource_type = :server
|
18
18
|
@api_map = Puree::Map.new.get
|
19
|
-
@
|
19
|
+
@base_url = base_url.nil? ? Puree.base_url : base_url
|
20
20
|
@basic_auth = basic_auth.nil? ? Puree.basic_auth : basic_auth
|
21
21
|
if @basic_auth === true
|
22
22
|
@username = username.nil? ? Puree.username : username
|
@@ -37,7 +37,7 @@ module Puree
|
|
37
37
|
end
|
38
38
|
|
39
39
|
# strip any trailing slash
|
40
|
-
@
|
40
|
+
@base_url = @base_url.sub(/(\/)+$/, '')
|
41
41
|
@auth = Base64::strict_encode64(@username + ':' + @password)
|
42
42
|
|
43
43
|
@options = {
|
@@ -66,28 +66,36 @@ module Puree
|
|
66
66
|
puts 'HTTP::Error '+ e.message
|
67
67
|
end
|
68
68
|
|
69
|
-
get_data? ?
|
69
|
+
get_data? ? combine_metadata : {}
|
70
70
|
end
|
71
71
|
|
72
72
|
# All metadata
|
73
73
|
#
|
74
74
|
# @return [Hash]
|
75
75
|
def metadata
|
76
|
-
|
77
|
-
o['version'] = version
|
78
|
-
o
|
76
|
+
@metadata
|
79
77
|
end
|
80
78
|
|
81
79
|
# Version
|
82
80
|
#
|
83
81
|
# @return [String]
|
84
82
|
def version
|
85
|
-
|
86
|
-
xpath_query(path).text.strip
|
83
|
+
@metadata['version']
|
87
84
|
end
|
88
85
|
|
89
86
|
private
|
90
87
|
|
88
|
+
def combine_metadata
|
89
|
+
o = {}
|
90
|
+
o['version'] = extract_version
|
91
|
+
@metadata = o
|
92
|
+
end
|
93
|
+
|
94
|
+
def extract_version
|
95
|
+
path = service_response_name + '/baseVersion'
|
96
|
+
xpath_query(path).text.strip
|
97
|
+
end
|
98
|
+
|
91
99
|
|
92
100
|
# Is there any data after get?
|
93
101
|
#
|
@@ -116,7 +124,7 @@ module Puree
|
|
116
124
|
else
|
117
125
|
service_api_mode = service + '.current'
|
118
126
|
end
|
119
|
-
@
|
127
|
+
@base_url + '/' + service_api_mode
|
120
128
|
end
|
121
129
|
|
122
130
|
def xpath_query(path)
|
@@ -128,8 +136,8 @@ module Puree
|
|
128
136
|
|
129
137
|
def missing_credentials
|
130
138
|
missing = []
|
131
|
-
if @
|
132
|
-
missing << '
|
139
|
+
if @base_url.nil?
|
140
|
+
missing << 'base_url'
|
133
141
|
end
|
134
142
|
if @username.nil?
|
135
143
|
missing << 'username'
|
data/lib/puree/version.rb
CHANGED
data/puree.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["Adrian Albin-Clark"]
|
10
10
|
spec.email = ["a.albin-clark@lancaster.ac.uk"]
|
11
11
|
spec.summary = %q{A client for the Pure Research Information System API.}
|
12
|
-
spec.description = %q{
|
12
|
+
spec.description = %q{Puree consumes the Pure Research Information System API and puts the metadata into simple data structures.}
|
13
13
|
spec.homepage = "https://github.com/lulibrary/puree.git"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
data/spec/collection.rb
CHANGED
@@ -3,11 +3,11 @@ require 'spec_helper'
|
|
3
3
|
describe 'Collection' do
|
4
4
|
|
5
5
|
it '#new' do
|
6
|
-
|
6
|
+
base_url = ENV['PURE_BASE_URL']
|
7
7
|
username = ENV['PURE_USERNAME']
|
8
8
|
password = ENV['PURE_PASSWORD']
|
9
9
|
p = Puree::Collection.new(resource: :dataset,
|
10
|
-
|
10
|
+
base_url: base_url,
|
11
11
|
username: username,
|
12
12
|
password: password,
|
13
13
|
basic_auth: true
|
@@ -17,11 +17,11 @@ describe 'Collection' do
|
|
17
17
|
|
18
18
|
describe 'data retrieval' do
|
19
19
|
before(:all) do
|
20
|
-
|
20
|
+
base_url = ENV['PURE_BASE_URL']
|
21
21
|
username = ENV['PURE_USERNAME']
|
22
22
|
password = ENV['PURE_PASSWORD']
|
23
23
|
@p = Puree::Collection.new(resource: :dataset,
|
24
|
-
|
24
|
+
base_url: base_url,
|
25
25
|
username: username,
|
26
26
|
password: password,
|
27
27
|
basic_auth: true)
|
data/spec/dataset.rb
CHANGED
@@ -9,11 +9,11 @@ describe 'Dataset' do
|
|
9
9
|
|
10
10
|
describe 'data retrieval' do
|
11
11
|
before(:all) do
|
12
|
-
|
12
|
+
base_url = ENV['PURE_BASE_URL']
|
13
13
|
username = ENV['PURE_USERNAME']
|
14
14
|
password = ENV['PURE_PASSWORD']
|
15
15
|
uuid = ENV['PURE_DATASET_UUID']
|
16
|
-
@p = Puree::Dataset.new(
|
16
|
+
@p = Puree::Dataset.new(base_url: base_url,
|
17
17
|
username: username,
|
18
18
|
password: password,
|
19
19
|
basic_auth: true)
|
@@ -52,10 +52,6 @@ describe 'Dataset' do
|
|
52
52
|
expect(@metadata['file']).to be_an_instance_of(Array)
|
53
53
|
end
|
54
54
|
|
55
|
-
it '#geographical' do
|
56
|
-
expect(@metadata['geographical']).to be_an_instance_of(Array)
|
57
|
-
end
|
58
|
-
|
59
55
|
it '#keyword' do
|
60
56
|
expect(@metadata['keyword']).to be_an_instance_of(Array)
|
61
57
|
end
|
@@ -88,6 +84,10 @@ describe 'Dataset' do
|
|
88
84
|
expect(@metadata['publisher']).to be_an_instance_of(String)
|
89
85
|
end
|
90
86
|
|
87
|
+
it '#spatial' do
|
88
|
+
expect(@metadata['spatial']).to be_an_instance_of(Array)
|
89
|
+
end
|
90
|
+
|
91
91
|
it '#temporal' do
|
92
92
|
expect(@metadata['temporal']).to be_an_instance_of(Hash)
|
93
93
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrian Albin-Clark
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: http
|
@@ -38,8 +38,8 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.6'
|
41
|
-
description:
|
42
|
-
|
41
|
+
description: Puree consumes the Pure Research Information System API and puts the
|
42
|
+
metadata into simple data structures.
|
43
43
|
email:
|
44
44
|
- a.albin-clark@lancaster.ac.uk
|
45
45
|
executables: []
|