puree 0.15.0 → 0.16.0
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|