puree 0.13.0 → 0.14.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 +14 -0
- data/README.md +129 -93
- data/lib/puree.rb +1 -0
- data/lib/puree/collection.rb +30 -11
- data/lib/puree/configuration.rb +17 -0
- data/lib/puree/dataset.rb +23 -3
- data/lib/puree/download.rb +26 -0
- data/lib/puree/event.rb +8 -2
- data/lib/puree/journal.rb +8 -2
- data/lib/puree/map.rb +7 -2
- data/lib/puree/organisation.rb +45 -2
- data/lib/puree/person.rb +8 -2
- data/lib/puree/project.rb +8 -2
- data/lib/puree/publication.rb +8 -2
- data/lib/puree/publisher.rb +8 -2
- data/lib/puree/resource.rb +49 -13
- data/lib/puree/version.rb +1 -1
- data/spec/collection.rb +6 -5
- data/spec/dataset.rb +4 -5
- data/spec/spec_helper.rb +1 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6b99230d8fee3aa6a259149b6b0fcf1beb258f43
|
4
|
+
data.tar.gz: 3c6e08559c575caa1edb25c986d91f670f157384
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 083843de876a7502201a2cea2180c39e0c0b9b7ea67d2dce14ad577e47f30243bd798a085d4a6fe48a0ec42a4be0ea901e945b0452bfe269206d4decf40fcea3
|
7
|
+
data.tar.gz: 48c0c50c3a3c1d9cddaed24ad7f9bc8ed90e750721ff244a7eed6150fbca37424827c304145b295259b44107cb9eeb5466289ebe56a6631e91f97a262cfa0031
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,20 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
+
## Unreleased
|
6
|
+
- Download stats.
|
7
|
+
|
8
|
+
## 0.14.0 - 2016-06-10
|
9
|
+
### Added
|
10
|
+
- Dataset (organisation).
|
11
|
+
- Organisation (parent).
|
12
|
+
- Credentials set globally.
|
13
|
+
- Global credentials override in ctor of resource.
|
14
|
+
- Find as alias for get.
|
15
|
+
|
16
|
+
### Removed
|
17
|
+
- Credentials passed with get.
|
18
|
+
|
5
19
|
## 0.13.0 - 2016-05-20
|
6
20
|
### Added
|
7
21
|
- Collection server-side search by date range (created, modified) and paging.
|
data/README.md
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
# Purée
|
2
|
-
|
1
|
+
# Purée [![Gem Version](https://badge.fury.io/rb/puree.svg)](https://badge.fury.io/rb/puree)
|
3
2
|
A Ruby client for the Pure Research Information System API.
|
4
3
|
|
5
4
|
|
@@ -18,26 +17,46 @@ Or install it yourself as:
|
|
18
17
|
$ gem install puree
|
19
18
|
|
20
19
|
## Usage
|
20
|
+
Authentication
|
21
|
+
|
21
22
|
```ruby
|
22
|
-
|
23
|
+
|
24
|
+
# Global settings together
|
25
|
+
Puree::Configuration.configure do |c|
|
26
|
+
c.endpoint = ENV['PURE_ENDPOINT']
|
27
|
+
c.username = ENV['PURE_USERNAME']
|
28
|
+
c.password = ENV['PURE_PASSWORD']
|
29
|
+
end
|
30
|
+
|
31
|
+
# Global settings individually
|
32
|
+
Puree::Configuration.endpoint = ENV['PURE_ENDPOINT']
|
33
|
+
Puree::Configuration.username = ENV['PURE_USERNAME']
|
34
|
+
Puree::Configuration.password = ENV['PURE_PASSWORD']
|
35
|
+
|
36
|
+
# Use global settings
|
37
|
+
d = Puree::Dataset.new
|
38
|
+
|
39
|
+
# Override one or more global settings in an instance
|
40
|
+
d = Puree::Dataset.new endpoint: 'http://example.com/ws/rest',
|
41
|
+
username: 'another_username',
|
42
|
+
password: 'another_password'
|
23
43
|
```
|
24
44
|
|
25
|
-
|
45
|
+
|
46
|
+
Dataset
|
26
47
|
|
27
48
|
```ruby
|
49
|
+
|
28
50
|
d = Puree::Dataset.new
|
29
51
|
|
30
52
|
# Get metadata using ID
|
31
|
-
d.
|
32
|
-
|
33
|
-
|
34
|
-
|
53
|
+
d.find id: 12345678
|
54
|
+
|
55
|
+
# Reuse instance
|
56
|
+
d.find id: 87654321
|
35
57
|
|
36
58
|
# Get metadata using UUID
|
37
|
-
d.
|
38
|
-
endpoint: endpoint,
|
39
|
-
username: username,
|
40
|
-
password: password
|
59
|
+
d.find uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
|
41
60
|
|
42
61
|
# Filter metadata into simple data structures
|
43
62
|
d.access
|
@@ -51,6 +70,7 @@ d.geographical
|
|
51
70
|
d.keyword
|
52
71
|
d.link
|
53
72
|
d.modified
|
73
|
+
d.organisation
|
54
74
|
d.person
|
55
75
|
d.production
|
56
76
|
d.project
|
@@ -70,21 +90,18 @@ d.response.message
|
|
70
90
|
d.response.headers # hash
|
71
91
|
```
|
72
92
|
|
73
|
-
Collection
|
93
|
+
Collection
|
74
94
|
|
75
95
|
```ruby
|
76
|
-
c = Puree::Collection.new
|
96
|
+
c = Puree::Collection.new api: :dataset
|
77
97
|
|
78
98
|
# Get three minimal datasets, starting at record ten, created and modified in January 2016.
|
79
|
-
c.
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
created_end: '2016-01-31', # optional
|
86
|
-
modified_start: '2016-01-01', # optional
|
87
|
-
modified_end: '2016-01-31' # optional
|
99
|
+
c.find limit: 3, # optional, default 20
|
100
|
+
offset: 10, # optional, default 0
|
101
|
+
created_start: '2016-01-01', # optional
|
102
|
+
created_end: '2016-01-31', # optional
|
103
|
+
modified_start: '2016-01-01', # optional
|
104
|
+
modified_end: '2016-01-31' # optional
|
88
105
|
|
89
106
|
# Get UUIDs for datasets
|
90
107
|
uuids = c.uuid
|
@@ -93,10 +110,7 @@ uuids = c.uuid
|
|
93
110
|
datasets = []
|
94
111
|
uuids.each do |uuid|
|
95
112
|
d = Puree::Dataset.new
|
96
|
-
d.
|
97
|
-
username: username,
|
98
|
-
password: password,
|
99
|
-
uuid: uuid
|
113
|
+
d.find uuid: uuid
|
100
114
|
datasets << d.metadata
|
101
115
|
end
|
102
116
|
```
|
@@ -110,9 +124,9 @@ Date made available. If year is present, month and day will have data or an empt
|
|
110
124
|
|
111
125
|
```ruby
|
112
126
|
{
|
113
|
-
"year"=>"2016",
|
114
|
-
"month"=>"2",
|
115
|
-
"day"=>"4"
|
127
|
+
"year" => "2016",
|
128
|
+
"month" => "2",
|
129
|
+
"day" => "4"
|
116
130
|
}
|
117
131
|
```
|
118
132
|
|
@@ -122,14 +136,14 @@ An array of files.
|
|
122
136
|
```ruby
|
123
137
|
[
|
124
138
|
{
|
125
|
-
"name"=>"foo.csv",
|
126
|
-
"mime"=>"application/octet-stream",
|
127
|
-
"size"=>"1616665158",
|
128
|
-
"url"=>"http://example.com/ws/rest/files/12345678/foo.csv",
|
129
|
-
"title"=>"foo.csv",
|
130
|
-
"license"=>{
|
131
|
-
"name"=>"CC BY-NC",
|
132
|
-
"url"=>"http://creativecommons.org/licenses/by-nc/4.0/"
|
139
|
+
"name" => "foo.csv",
|
140
|
+
"mime" => "application/octet-stream",
|
141
|
+
"size" => "1616665158",
|
142
|
+
"url" => "http://example.com/ws/rest/files/12345678/foo.csv",
|
143
|
+
"title" => "foo.csv",
|
144
|
+
"license" => {
|
145
|
+
"name" => "CC BY-NC",
|
146
|
+
"url" => "http://creativecommons.org/licenses/by-nc/4.0/"
|
133
147
|
}
|
134
148
|
},
|
135
149
|
]
|
@@ -141,37 +155,48 @@ An array of links.
|
|
141
155
|
```ruby
|
142
156
|
[
|
143
157
|
{
|
144
|
-
"url"
|
145
|
-
"description"
|
158
|
+
"url" => "http://www.example.com/~abc1234/xyz/",
|
159
|
+
"description" => "An interesting description"
|
146
160
|
},
|
147
161
|
]
|
148
162
|
```
|
149
163
|
|
164
|
+
#### organisation
|
165
|
+
Organisation responsible.
|
166
|
+
|
167
|
+
```ruby
|
168
|
+
{
|
169
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",
|
170
|
+
"name" => "Institute for the Arts",
|
171
|
+
"type" => "Department"
|
172
|
+
}
|
173
|
+
```
|
174
|
+
|
150
175
|
#### person
|
151
176
|
Contains an array of internal persons, an array of external persons and an array of other persons.
|
152
177
|
|
153
178
|
```ruby
|
154
179
|
{
|
155
|
-
"internal"=>[
|
180
|
+
"internal" => [
|
156
181
|
{
|
157
|
-
"name"=>{
|
158
|
-
"first"=>"Stan",
|
159
|
-
"last"=>"Laurel"
|
182
|
+
"name" => {
|
183
|
+
"first" => "Stan",
|
184
|
+
"last" => "Laurel"
|
160
185
|
},
|
161
|
-
"role"=>"Creator",
|
162
|
-
"uuid"=>"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
|
186
|
+
"role" => "Creator",
|
187
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
|
163
188
|
},
|
164
189
|
],
|
165
|
-
"external"=>[
|
190
|
+
"external" => [
|
166
191
|
],
|
167
|
-
"other"=>[
|
192
|
+
"other" => [
|
168
193
|
{
|
169
|
-
"name"=>{
|
170
|
-
"first"=>"Hal",
|
171
|
-
"last"=>"Roach"
|
194
|
+
"name" => {
|
195
|
+
"first" => "Hal",
|
196
|
+
"last" => "Roach"
|
172
197
|
},
|
173
|
-
"role"=>"Contributor",
|
174
|
-
"uuid"=>""
|
198
|
+
"role" => "Contributor",
|
199
|
+
"uuid" => ""
|
175
200
|
},
|
176
201
|
]
|
177
202
|
}
|
@@ -183,8 +208,8 @@ An array of projects associated with the dataset.
|
|
183
208
|
```ruby
|
184
209
|
[
|
185
210
|
{
|
186
|
-
"title"
|
187
|
-
"uuid"
|
211
|
+
"title" => "An interesting project title",
|
212
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
|
188
213
|
},
|
189
214
|
]
|
190
215
|
```
|
@@ -195,34 +220,34 @@ An array of research outputs associated with the dataset.
|
|
195
220
|
```ruby
|
196
221
|
[
|
197
222
|
{
|
198
|
-
"type"
|
199
|
-
"title"
|
200
|
-
"uuid"
|
223
|
+
"type" => "Journal article",
|
224
|
+
"title" => "An interesting journal article title",
|
225
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
|
201
226
|
},
|
202
227
|
{
|
203
|
-
"type"
|
204
|
-
"title"
|
205
|
-
"uuid"
|
228
|
+
"type" => "Conference paper",
|
229
|
+
"title" => "An interesting conference paper title",
|
230
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
|
206
231
|
},
|
207
232
|
{
|
208
|
-
"type"
|
209
|
-
"title"
|
210
|
-
"uuid"
|
233
|
+
"type" => "Working paper",
|
234
|
+
"title" => "An interesting working paper title",
|
235
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
|
211
236
|
},
|
212
237
|
{
|
213
|
-
"type"
|
214
|
-
"title"
|
215
|
-
"uuid"
|
238
|
+
"type" => "Paper",
|
239
|
+
"title" => "An interesting paper title",
|
240
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
|
216
241
|
},
|
217
242
|
{
|
218
|
-
"type"
|
219
|
-
"title"
|
220
|
-
"uuid"
|
243
|
+
"type" => "Dataset",
|
244
|
+
"title" => "An interesting dataset title",
|
245
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
|
221
246
|
},
|
222
247
|
{
|
223
|
-
"type"
|
224
|
-
"title"
|
225
|
-
"uuid"
|
248
|
+
"type" => "Chapter",
|
249
|
+
"title" => "An interesting chapter title",
|
250
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
|
226
251
|
},
|
227
252
|
]
|
228
253
|
```
|
@@ -232,15 +257,15 @@ Date range. If year is present, month and day will have data or an empty string.
|
|
232
257
|
|
233
258
|
```ruby
|
234
259
|
{
|
235
|
-
"start"=>{
|
236
|
-
"year"=>"2005",
|
237
|
-
"month"=>"5",
|
238
|
-
"day"=>"10"
|
260
|
+
"start" => {
|
261
|
+
"year" => "2005",
|
262
|
+
"month" => "5",
|
263
|
+
"day" => "10"
|
239
264
|
},
|
240
|
-
"end"=>{
|
241
|
-
"year"=>"2011",
|
242
|
-
"month"=>"9",
|
243
|
-
"day"=>"18"
|
265
|
+
"end" => {
|
266
|
+
"year" => "2011",
|
267
|
+
"month" => "9",
|
268
|
+
"day" => "18"
|
244
269
|
}
|
245
270
|
}
|
246
271
|
```
|
@@ -253,15 +278,26 @@ An array of addresses.
|
|
253
278
|
```ruby
|
254
279
|
[
|
255
280
|
{
|
256
|
-
"street"=>"Lancaster University",
|
257
|
-
"building"=>"Bowland North",
|
258
|
-
"postcode"=>"LA1 4YN",
|
259
|
-
"city"=>"Lancaster",
|
260
|
-
"country"=>"United Kingdom"
|
281
|
+
"street" => "Lancaster University",
|
282
|
+
"building" => "Bowland North",
|
283
|
+
"postcode" => "LA1 4YN",
|
284
|
+
"city" => "Lancaster",
|
285
|
+
"country" => "United Kingdom"
|
261
286
|
},
|
262
287
|
]
|
263
288
|
```
|
264
289
|
|
290
|
+
#### parent
|
291
|
+
Parent organisation.
|
292
|
+
|
293
|
+
```ruby
|
294
|
+
{
|
295
|
+
"uuid" => "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx",
|
296
|
+
"name" => "Institute for the Arts",
|
297
|
+
"type" => "Department"
|
298
|
+
}
|
299
|
+
```
|
300
|
+
|
265
301
|
### Publication
|
266
302
|
|
267
303
|
#### file
|
@@ -270,10 +306,10 @@ An array of files.
|
|
270
306
|
```ruby
|
271
307
|
[
|
272
308
|
{
|
273
|
-
"name"=>"foo.csv",
|
274
|
-
"mime"=>"application/octet-stream",
|
275
|
-
"size"=>"1616665158",
|
276
|
-
"url"=>"http://example.com/ws/rest/files/12345678/foo.csv",
|
309
|
+
"name" => "foo.csv",
|
310
|
+
"mime" => "application/octet-stream",
|
311
|
+
"size" => "1616665158",
|
312
|
+
"url" => "http://example.com/ws/rest/files/12345678/foo.csv",
|
277
313
|
},
|
278
314
|
]
|
279
315
|
```
|
@@ -287,9 +323,9 @@ Puree::Date.iso d.available
|
|
287
323
|
```
|
288
324
|
```ruby
|
289
325
|
{
|
290
|
-
"year"=>"2016",
|
291
|
-
"month"=>"4",
|
292
|
-
"day"=>"18"
|
326
|
+
"year" => "2016",
|
327
|
+
"month" => "4",
|
328
|
+
"day" => "18"
|
293
329
|
}
|
294
330
|
```
|
295
331
|
becomes
|
data/lib/puree.rb
CHANGED
data/lib/puree/collection.rb
CHANGED
@@ -4,30 +4,48 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Collection < Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param api [Symbol]
|
8
|
+
# @param endpoint [String]
|
9
|
+
# @param optional username [String]
|
10
|
+
# @param optional password [String]
|
11
|
+
def initialize(api: nil,
|
12
|
+
endpoint: nil,
|
13
|
+
username: nil,
|
14
|
+
password: nil)
|
15
|
+
super(api: api,
|
16
|
+
endpoint: endpoint,
|
17
|
+
username: username,
|
18
|
+
password: password)
|
9
19
|
@uuids = []
|
10
20
|
end
|
11
21
|
|
12
22
|
# Get
|
13
23
|
#
|
14
|
-
# @param
|
15
|
-
# @param
|
16
|
-
# @param
|
17
|
-
# @param
|
24
|
+
# @param optional limit [Integer]
|
25
|
+
# @param optional offset [Integer]
|
26
|
+
# @param optional created_start [String]
|
27
|
+
# @param optional created_end [String]
|
28
|
+
# @param optional modified_start [String]
|
29
|
+
# @param optional modified_end [String]
|
18
30
|
# @return [HTTParty::Response]
|
19
|
-
def get(
|
20
|
-
username: nil,
|
21
|
-
password: nil,
|
31
|
+
def get(
|
22
32
|
limit: 20,
|
23
33
|
offset: 0,
|
24
34
|
created_start: nil,
|
25
35
|
created_end: nil,
|
26
36
|
modified_start: nil,
|
27
37
|
modified_end: nil)
|
38
|
+
|
39
|
+
missing = missing_credentials
|
40
|
+
if !missing.empty?
|
41
|
+
missing.each do |m|
|
42
|
+
puts "#{self.class.name}" + '#' + "#{__method__} missing #{m}"
|
43
|
+
end
|
44
|
+
exit
|
45
|
+
end
|
28
46
|
# strip any trailing slash
|
29
|
-
@endpoint = endpoint.sub(/(\/)+$/, '')
|
30
|
-
@auth = Base64::strict_encode64(username + ':' + password)
|
47
|
+
@endpoint = @endpoint.sub(/(\/)+$/, '')
|
48
|
+
@auth = Base64::strict_encode64(@username + ':' + @password)
|
31
49
|
|
32
50
|
@options = {
|
33
51
|
latest_api: true,
|
@@ -95,6 +113,7 @@ module Puree
|
|
95
113
|
xpath_result.each { |i| @uuids << i.text.strip }
|
96
114
|
end
|
97
115
|
|
116
|
+
alias :find :get
|
98
117
|
|
99
118
|
end
|
100
119
|
|
data/lib/puree/dataset.rb
CHANGED
@@ -4,8 +4,14 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Dataset < Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param endpoint [String]
|
8
|
+
# @param optional username [String]
|
9
|
+
# @param optional password [String]
|
10
|
+
def initialize(endpoint: nil, username: nil, password: nil)
|
11
|
+
super(api: :dataset,
|
12
|
+
endpoint: endpoint,
|
13
|
+
username: username,
|
14
|
+
password: password)
|
9
15
|
end
|
10
16
|
|
11
17
|
# Link
|
@@ -21,7 +27,20 @@ module Puree
|
|
21
27
|
o['description'] = i.xpath('description').text.strip
|
22
28
|
data << o
|
23
29
|
}
|
24
|
-
|
30
|
+
data.uniq
|
31
|
+
end
|
32
|
+
|
33
|
+
# Organisation
|
34
|
+
#
|
35
|
+
# @return [Hash]
|
36
|
+
def organisation
|
37
|
+
path = '//content/managedBy'
|
38
|
+
xpath_result = xpath_query path
|
39
|
+
o = {}
|
40
|
+
o['uuid'] = xpath_result.xpath('@uuid').text.strip
|
41
|
+
o['name'] = xpath_result.xpath('name/localizedString').text.strip
|
42
|
+
o['type'] = xpath_result.xpath('typeClassification/term/localizedString').text.strip
|
43
|
+
o
|
25
44
|
end
|
26
45
|
|
27
46
|
# Publisher
|
@@ -260,6 +279,7 @@ module Puree
|
|
260
279
|
o['geographical'] = geographical
|
261
280
|
o['keyword'] = keyword
|
262
281
|
o['link'] = link
|
282
|
+
o['organisation'] = organisation
|
263
283
|
o['person'] = person
|
264
284
|
o['project'] = project
|
265
285
|
o['production'] = production
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Puree
|
2
|
+
|
3
|
+
# Download resource
|
4
|
+
#
|
5
|
+
class Download < Resource
|
6
|
+
|
7
|
+
# @param endpoint [String]
|
8
|
+
# @param optional username [String]
|
9
|
+
# @param optional password [String]
|
10
|
+
def initialize(endpoint: nil, username: nil, password: nil)
|
11
|
+
super(api: :download,
|
12
|
+
endpoint: endpoint,
|
13
|
+
username: username,
|
14
|
+
password: password)
|
15
|
+
end
|
16
|
+
|
17
|
+
# All metadata
|
18
|
+
#
|
19
|
+
# @return [Hash]
|
20
|
+
# def metadata
|
21
|
+
# super
|
22
|
+
# end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
data/lib/puree/event.rb
CHANGED
@@ -4,8 +4,14 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Event < Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param endpoint [String]
|
8
|
+
# @param optional username [String]
|
9
|
+
# @param optional password [String]
|
10
|
+
def initialize(endpoint: nil, username: nil, password: nil)
|
11
|
+
super(api: :event,
|
12
|
+
endpoint: endpoint,
|
13
|
+
username: username,
|
14
|
+
password: password)
|
9
15
|
end
|
10
16
|
|
11
17
|
# City
|
data/lib/puree/journal.rb
CHANGED
@@ -4,8 +4,14 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Journal < Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param endpoint [String]
|
8
|
+
# @param optional username [String]
|
9
|
+
# @param optional password [String]
|
10
|
+
def initialize(endpoint: nil, username: nil, password: nil)
|
11
|
+
super(api: :journal,
|
12
|
+
endpoint: endpoint,
|
13
|
+
username: username,
|
14
|
+
password: password)
|
9
15
|
end
|
10
16
|
|
11
17
|
# All metadata
|
data/lib/puree/map.rb
CHANGED
@@ -17,8 +17,13 @@ module Puree
|
|
17
17
|
resource_type: {
|
18
18
|
dataset: {
|
19
19
|
service: 'datasets',
|
20
|
-
response: 'GetDataSetsResponse'
|
21
|
-
|
20
|
+
response: 'GetDataSetsResponse',
|
21
|
+
family: 'dk.atira.pure.modules.datasets.external.model.dataset.DataSet'
|
22
|
+
},
|
23
|
+
download: {
|
24
|
+
service: 'downloadcount',
|
25
|
+
response: 'GetDownloadCountResponse'
|
26
|
+
},
|
22
27
|
}
|
23
28
|
}
|
24
29
|
|
data/lib/puree/organisation.rb
CHANGED
@@ -4,8 +4,14 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Organisation < Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param endpoint [String]
|
8
|
+
# @param optional username [String]
|
9
|
+
# @param optional password [String]
|
10
|
+
def initialize(endpoint: nil, username: nil, password: nil)
|
11
|
+
super(api: :organisation,
|
12
|
+
endpoint: endpoint,
|
13
|
+
username: username,
|
14
|
+
password: password)
|
9
15
|
end
|
10
16
|
|
11
17
|
# Address
|
@@ -48,6 +54,18 @@ module Puree
|
|
48
54
|
!data.nil? && !data.empty? ? data['localizedString']['__content__'].strip : ''
|
49
55
|
end
|
50
56
|
|
57
|
+
# Parent
|
58
|
+
#
|
59
|
+
# @return [Hash]
|
60
|
+
def parent
|
61
|
+
data = organisation
|
62
|
+
o = {}
|
63
|
+
if !data.empty?
|
64
|
+
o = data.first
|
65
|
+
end
|
66
|
+
o
|
67
|
+
end
|
68
|
+
|
51
69
|
# Phone
|
52
70
|
#
|
53
71
|
# @return [Array<String>]
|
@@ -87,12 +105,37 @@ module Puree
|
|
87
105
|
o['address'] = address
|
88
106
|
o['email'] = email
|
89
107
|
o['name'] = name
|
108
|
+
o['parent'] = parent
|
90
109
|
o['phone'] = phone
|
91
110
|
o['type'] = type
|
92
111
|
o['url'] = url
|
93
112
|
o
|
94
113
|
end
|
95
114
|
|
115
|
+
|
116
|
+
private
|
117
|
+
|
118
|
+
|
119
|
+
# Organisation
|
120
|
+
#
|
121
|
+
# @return [Array<Hash>]
|
122
|
+
def organisation
|
123
|
+
path = '//organisations/organisation'
|
124
|
+
xpath_result = xpath_query path
|
125
|
+
|
126
|
+
data = []
|
127
|
+
|
128
|
+
xpath_result.each do |d|
|
129
|
+
o = {}
|
130
|
+
o['uuid'] = d.xpath('@uuid').text.strip
|
131
|
+
o['name'] = d.xpath('name/localizedString').text.strip
|
132
|
+
o['type'] = d.xpath('typeClassification/term/localizedString').text.strip
|
133
|
+
data << o
|
134
|
+
end
|
135
|
+
data.uniq
|
136
|
+
end
|
137
|
+
|
138
|
+
|
96
139
|
end
|
97
140
|
|
98
141
|
end
|
data/lib/puree/person.rb
CHANGED
@@ -4,8 +4,14 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Person < Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param endpoint [String]
|
8
|
+
# @param optional username [String]
|
9
|
+
# @param optional password [String]
|
10
|
+
def initialize(endpoint: nil, username: nil, password: nil)
|
11
|
+
super(api: :person,
|
12
|
+
endpoint: endpoint,
|
13
|
+
username: username,
|
14
|
+
password: password)
|
9
15
|
end
|
10
16
|
|
11
17
|
# Affiliation
|
data/lib/puree/project.rb
CHANGED
@@ -4,8 +4,14 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Project < Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param endpoint [String]
|
8
|
+
# @param optional username [String]
|
9
|
+
# @param optional password [String]
|
10
|
+
def initialize(endpoint: nil, username: nil, password: nil)
|
11
|
+
super(api: :project,
|
12
|
+
endpoint: endpoint,
|
13
|
+
username: username,
|
14
|
+
password: password)
|
9
15
|
end
|
10
16
|
|
11
17
|
# All metadata
|
data/lib/puree/publication.rb
CHANGED
@@ -4,8 +4,14 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Publication < Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param endpoint [String]
|
8
|
+
# @param optional username [String]
|
9
|
+
# @param optional password [String]
|
10
|
+
def initialize(endpoint: nil, username: nil, password: nil)
|
11
|
+
super(api: :publication,
|
12
|
+
endpoint: endpoint,
|
13
|
+
username: username,
|
14
|
+
password: password)
|
9
15
|
end
|
10
16
|
|
11
17
|
# Description
|
data/lib/puree/publisher.rb
CHANGED
@@ -4,8 +4,14 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Publisher < Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param endpoint [String]
|
8
|
+
# @param optional username [String]
|
9
|
+
# @param optional password [String]
|
10
|
+
def initialize(endpoint: nil, username: nil, password: nil)
|
11
|
+
super(api: :publisher,
|
12
|
+
endpoint: endpoint,
|
13
|
+
username: username,
|
14
|
+
password: password)
|
9
15
|
end
|
10
16
|
|
11
17
|
# All metadata
|
data/lib/puree/resource.rb
CHANGED
@@ -4,28 +4,38 @@ module Puree
|
|
4
4
|
#
|
5
5
|
class Resource
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
# @param api [String]
|
8
|
+
# @param endpoint [String]
|
9
|
+
# @param optional username [String]
|
10
|
+
# @param optional password [String]
|
11
|
+
def initialize( api: nil,
|
12
|
+
endpoint: nil,
|
13
|
+
username: nil,
|
14
|
+
password: nil)
|
15
|
+
@resource_type = api
|
9
16
|
@api_map = Puree::Map.new.get
|
17
|
+
@endpoint = endpoint.nil? ? Puree::Configuration.endpoint : endpoint
|
18
|
+
@username = username.nil? ? Puree::Configuration.username : username
|
19
|
+
@password = password.nil? ? Puree::Configuration.password : password
|
10
20
|
end
|
11
21
|
|
12
22
|
# Get
|
13
23
|
#
|
14
|
-
# @param endpoint [String]
|
15
|
-
# @param username [String]
|
16
|
-
# @param password [String]
|
17
24
|
# @param uuid [String]
|
18
25
|
# @param id [String]
|
19
26
|
# @return [HTTParty::Response]
|
20
|
-
def get(
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
27
|
+
def get(uuid: nil, id: nil)
|
28
|
+
missing = missing_credentials
|
29
|
+
if !missing.empty?
|
30
|
+
missing.each do |m|
|
31
|
+
puts "#{self.class.name}" + '#' + "#{__method__} missing #{m}"
|
32
|
+
end
|
33
|
+
exit
|
34
|
+
end
|
35
|
+
|
26
36
|
# strip any trailing slash
|
27
|
-
@endpoint = endpoint.sub(/(\/)+$/, '')
|
28
|
-
@auth = Base64::strict_encode64(username + ':' + password)
|
37
|
+
@endpoint = @endpoint.sub(/(\/)+$/, '')
|
38
|
+
@auth = Base64::strict_encode64(@username + ':' + @password)
|
29
39
|
|
30
40
|
@options = {
|
31
41
|
latest_api: true,
|
@@ -124,9 +134,20 @@ module Puree
|
|
124
134
|
o
|
125
135
|
end
|
126
136
|
|
137
|
+
|
138
|
+
|
127
139
|
private
|
128
140
|
|
129
141
|
|
142
|
+
def collect_uuid
|
143
|
+
path = '//renderedItem/@renderedContentUUID'
|
144
|
+
xpath_result = xpath_query path
|
145
|
+
xpath_result.each { |i| @uuids << i.text.strip }
|
146
|
+
end
|
147
|
+
|
148
|
+
|
149
|
+
|
150
|
+
|
130
151
|
|
131
152
|
# Node
|
132
153
|
#
|
@@ -171,6 +192,21 @@ module Puree
|
|
171
192
|
doc.xpath path
|
172
193
|
end
|
173
194
|
|
195
|
+
def missing_credentials
|
196
|
+
missing = []
|
197
|
+
if @endpoint.nil?
|
198
|
+
missing << 'endpoint'
|
199
|
+
end
|
200
|
+
if @username.nil?
|
201
|
+
missing << 'username'
|
202
|
+
end
|
203
|
+
if @password.nil?
|
204
|
+
missing << 'password'
|
205
|
+
end
|
206
|
+
missing
|
207
|
+
end
|
208
|
+
|
209
|
+
alias :find :get
|
174
210
|
|
175
211
|
end
|
176
212
|
end
|
data/lib/puree/version.rb
CHANGED
data/spec/collection.rb
CHANGED
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe 'Collection' do
|
4
4
|
|
5
5
|
it '#new' do
|
6
|
-
p = Puree::Collection.new(
|
6
|
+
p = Puree::Collection.new(api: :dataset)
|
7
7
|
expect(p).to be_an_instance_of Puree::Collection
|
8
8
|
end
|
9
9
|
|
@@ -12,10 +12,11 @@ describe 'Collection' do
|
|
12
12
|
endpoint = ENV['PURE_ENDPOINT']
|
13
13
|
username = ENV['PURE_USERNAME']
|
14
14
|
password = ENV['PURE_PASSWORD']
|
15
|
-
@p = Puree::Collection.new(
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
@p = Puree::Collection.new(api: :dataset,
|
16
|
+
endpoint: endpoint,
|
17
|
+
username: username,
|
18
|
+
password: password)
|
19
|
+
@p.find limit: 5
|
19
20
|
end
|
20
21
|
|
21
22
|
it '#UUID' do
|
data/spec/dataset.rb
CHANGED
@@ -13,11 +13,10 @@ describe 'Dataset' do
|
|
13
13
|
username = ENV['PURE_USERNAME']
|
14
14
|
password = ENV['PURE_PASSWORD']
|
15
15
|
uuid = ENV['PURE_DATASET_UUID']
|
16
|
-
@p = Puree::Dataset.new
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
uuid: uuid
|
16
|
+
@p = Puree::Dataset.new(endpoint: endpoint,
|
17
|
+
username: username,
|
18
|
+
password: password)
|
19
|
+
@p.find uuid: uuid
|
21
20
|
end
|
22
21
|
|
23
22
|
it '#access' do
|
data/spec/spec_helper.rb
CHANGED
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.14.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-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -54,8 +54,10 @@ files:
|
|
54
54
|
- Rakefile
|
55
55
|
- lib/puree.rb
|
56
56
|
- lib/puree/collection.rb
|
57
|
+
- lib/puree/configuration.rb
|
57
58
|
- lib/puree/dataset.rb
|
58
59
|
- lib/puree/date.rb
|
60
|
+
- lib/puree/download.rb
|
59
61
|
- lib/puree/event.rb
|
60
62
|
- lib/puree/journal.rb
|
61
63
|
- lib/puree/map.rb
|