research_metadata_announcement 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff0cd7e7c0d266317baf77bc2a3dcf8d9b302f0e
4
- data.tar.gz: fe1ab9987cf4126be7bf6ad1d70803b495db61d4
3
+ metadata.gz: b4e9c9fd7ba55dbdb831bf9fc25fc4c6df3785ba
4
+ data.tar.gz: 280d4111796b2ea9ad96b72076891027608bbac2
5
5
  SHA512:
6
- metadata.gz: f1e53c46bc3f5e19e98515e42d7474ca41dc0a25b87802bdff40d553317f022daf25f8402cc1963eb278afc26eafbcb95b7a8392dd0ba8d887a0978c8beaddd2
7
- data.tar.gz: 1ed70c165582d900673e89de96bbcb4add6b3b9ac453ddc2d696fc357231b93bd47be66da261b21630e1f4f1333e39c67b355dc4274a97dc5ae560fdbb60e1cc
6
+ metadata.gz: 0599597e515308ad7183fddb3d59791fd596c25c5d02bb9dc1c2ec0487241618f957f72765bab6cf4dd293919b4eb77f40ae22913c844e763ee461f4f46cac00
7
+ data.tar.gz: 4ff2e913fb3b5621226d36b5c429be46fde5e3491df8dc275df97a8fe90ef09b71b5b02bbe0c9a6422898de5a0f45ba9fb584aa1f636479659fe83c6a07ef196
data/CHANGELOG.md CHANGED
@@ -2,20 +2,12 @@
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
- ## 0.4.2 - 2018-01-18
5
+ ## 0.5.0 - 2018-01-11
6
6
  ### Changed
7
- Handle missing resolver in DOI more robustly.
7
+ - For Pure API 59.
8
8
 
9
- ## 0.4.1 - 2018-01-17
10
9
  ### Added
11
- - Testing announcements against known live data.
12
-
13
- ### Fixed
14
- - Ellipsis after truncated title.
15
-
16
- ### Changed
17
- - Handle missing resolver in DOI.
18
- - Handle full stop in title.
10
+ - Testing against known live data.
19
11
 
20
12
  ## 0.4.0 - 2017-10-10
21
13
  ### Changed
data/README.md CHANGED
@@ -5,8 +5,7 @@ Metadata extraction from the Pure Research Information System and transformation
5
5
  ## Status
6
6
 
7
7
  [![Gem Version](https://badge.fury.io/rb/research_metadata_announcement.svg)](https://badge.fury.io/rb/research_metadata_announcement)
8
- [![Build Status](https://semaphoreci.com/api/v1/aalbinclark/research_metadata_announcement/branches/master/badge.svg)](https://semaphoreci.com/aalbinclark/research_metadata_announcement)
9
- [![Code Climate](https://codeclimate.com/github/lulibrary/research_metadata_announcement/badges/gpa.svg)](https://codeclimate.com/github/lulibrary/research_metadata_announcement)
8
+ [![Maintainability](https://api.codeclimate.com/v1/badges/79ba809b90fc85508aa6/maintainability)](https://codeclimate.com/github/lulibrary/research_metadata_announcement/maintainability)
10
9
 
11
10
  ## Installation
12
11
 
@@ -29,18 +28,11 @@ Or install it yourself as:
29
28
  Create a hash for passing to a transformer.
30
29
 
31
30
  ```ruby
32
- # Pure host with authentication.
33
31
  config = {
34
- url: ENV['PURE_URL'],
35
- username: ENV['PURE_USERNAME'],
36
- password: ENV['PURE_PASSWORD'],
37
- }
38
- ```
39
-
40
- ```ruby
41
- # Pure host without authentication.
42
- config = {
43
- url: ENV['PURE_URL']
32
+ url: 'https://YOUR_HOST/ws/api/59',
33
+ username: 'YOUR_USERNAME',
34
+ password: 'YOUR_PASSWORD',
35
+ api_key: 'YOUR_API_KEY'
44
36
  }
45
37
  ```
46
38
 
@@ -55,7 +47,7 @@ transformer = ResearchMetadataAnnouncement::Transformer::Dataset.new config
55
47
  Give it a Pure identifier and get an announcement.
56
48
 
57
49
  ```ruby
58
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
50
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
59
51
  ```
60
52
 
61
53
  Optionally, use the ```:composition``` keyword argument to pass in an array of
@@ -88,34 +80,34 @@ Each example uses a different resource for illustrative purposes.
88
80
 
89
81
  ```ruby
90
82
 
91
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
83
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
92
84
  #=> "New journal article. Can poly-parameter linear-free energy relationships (pp-LFERs) improve modelling bioaccumulation in fish? #partitioncoefficients #pplfer. dx.doi.org/10.1016/j.chemosphere.2017.10.007."
93
85
 
94
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', max_length: 140
95
- #=> "New journal article. The Parting of Burroughs and Ker... #americancounterculture #arthurrimbaud. dx.doi.org/10.1179/1477570013Z.00000000045."
86
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', max_length: 140
87
+ #=> "New journal article. The Parting of Burroughs and... #americancounterculture #arthurrimbaud. dx.doi.org/10.1179/1477570013Z.00000000045."
96
88
 
97
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:new, :title, :hashtags] # research output has no descriptors
89
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:new, :title, :hashtags] # research output has no descriptors
98
90
  #=> "New conference paper. Deductive and inductive data collection for agent-based modelling."
99
91
 
100
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:new, :title, :keywords, :uri]
92
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:new, :title, :keywords, :uri]
101
93
  #=> "New journal article. Torsion pairs in a triangulated category generated by a spherical object. Auslander–Reiten theory, Calabi–Yau triangulated category. dx.doi.org/10.1016/j.jalgebra.2015.09.011."
102
94
 
103
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:new, :title, :uri]
95
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:new, :title, :uri]
104
96
  #=> "New dataset. Operating Nanobeams in a Quantum Fluid. dx.doi.org/10.17635/lancaster/researchdata/139."
105
97
 
106
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:uri, :title]
98
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:uri, :title]
107
99
  #=> "dx.doi.org/10.17635/lancaster/researchdata/29. Herpes simplex virus 1 (HSV-1) evolution."
108
100
 
109
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:keywords, :uri]
101
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:keywords, :uri]
110
102
  #=> "smart cities, sustainability. dx.doi.org/10.17635/lancaster/researchdata/35."
111
103
 
112
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:hashtags, :uri]
104
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:hashtags, :uri]
113
105
  #=> "#treatedhypertension #microvascularbloodflow. dx.doi.org/10.17635/lancaster/researchdata/148."
114
106
 
115
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:uri, :keywords]
107
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:uri, :keywords]
116
108
  #=> "dx.doi.org/10.17635/lancaster/researchdata/134. metagenomics, deep sequencing."
117
109
 
118
- transformer.transform uuid: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:uri, :hashtags], max_descriptors: 4
110
+ transformer.transform id: 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', composition: [:uri, :hashtags], max_descriptors: 4
119
111
  #=> "dx.doi.org/10.17635/lancaster/researchdata/111. #influenza #nasopharynx #virology #virus."
120
112
 
121
113
  ```
@@ -2,7 +2,7 @@ require 'puree'
2
2
 
3
3
  require 'research_metadata_announcement/transformer/base'
4
4
  require 'research_metadata_announcement/transformer/dataset'
5
- require 'research_metadata_announcement/transformer/publication'
5
+ require 'research_metadata_announcement/transformer/research_output'
6
6
  require 'research_metadata_announcement/version'
7
7
 
8
8
  # Metadata extraction from the Pure Research Information System and
@@ -6,29 +6,30 @@ module ResearchMetadataAnnouncement
6
6
  class Base
7
7
 
8
8
  # @param config [Hash]
9
- # @option config [String] :url The URL of the Pure host.
10
- # @option config [String] :username The username of the Pure host account.
11
- # @option config [String] :password The password of the Pure host account.
12
-
9
+ # @option config [String] :url URL of the Pure host
10
+ # @option config [String] :username Username of the Pure host account
11
+ # @option config [String] :password Password of the Pure host account
12
+ # @option config [String] :api_key API key of the Pure host account
13
13
  def initialize(config)
14
14
  @config = config
15
15
  end
16
16
 
17
- # @param id [String] Pure ID.
18
- # @param uuid [String] Pure UUID.
17
+ # @param id [String] Pure identifier.
19
18
  # @param composition [Array<Symbol>] Metadata presentation sequence e.g. [:new, :title, :hashtags, :uri].
20
19
  # @param max_length [Fixnum] Maximum length of announcement.
21
20
  # @param max_descriptors [Fixnum] Maximum number of descriptors (common name for keywords, tags, hashtags).
22
21
  # @return [String, nil] Announcement returned if the metadata is available and the announcement length does not exceed the max_length argument.
23
- def transform(uuid: nil, id: nil, composition: [:new, :title, :hashtags, :uri],
22
+ def transform(id:, composition: [:new, :title, :hashtags, :uri],
24
23
  max_length: nil, max_descriptors: 2)
25
24
  composition.uniq!
26
- extract uuid: uuid, id: id
25
+
26
+ @resource = @resource_extractor.find id
27
+
27
28
  return nil unless @resource
28
29
  if composition.include? :uri
29
30
  return nil unless prepare_uri
30
31
  end
31
- title = remove_full_stop @resource.title
32
+ title = @resource.title
32
33
  keywords = @resource.keywords
33
34
 
34
35
  # sizing
@@ -38,7 +39,7 @@ module ResearchMetadataAnnouncement
38
39
  composition.each do |component|
39
40
  case component
40
41
  when :new
41
- phrase = new_phrase(@resource)
42
+ phrase = new_phrase(@resource)
42
43
  chars_needed += phrase.size + chars_component_end
43
44
  when :title
44
45
  chars_needed += title.size + chars_component_end
@@ -48,16 +49,10 @@ module ResearchMetadataAnnouncement
48
49
  chars_needed += build_hashtags(keywords, max_descriptors).size + chars_component_end if !keywords.empty?
49
50
  when :uri
50
51
  uri = prepare_uri
51
- chars_needed += uri.size + chars_component_end if uri
52
+ chars_needed += uri.size if uri
52
53
  end
53
54
  end
54
55
 
55
- # since the arrangement of the composition is unknown, after sizing
56
- # chars_needed has two extra spaces allocated
57
- # one is used for the terminating full stop
58
- # one is not needed
59
- chars_needed -= 1
60
-
61
56
  # determine if title needs truncating/removing before combining
62
57
  if chars_needed > max_length
63
58
  # truncate title
@@ -65,7 +60,7 @@ module ResearchMetadataAnnouncement
65
60
  excess_chars = chars_needed - max_length
66
61
  truncated_title_length = title.size - excess_chars
67
62
  truncated_title_length = 0 if truncated_title_length < 0
68
- title = title[0..truncated_title_length - 3].strip + '..'
63
+ title = title[0..truncated_title_length - 2].strip + '..'
69
64
  composition -= [:title] if title.size <= 5 # give up on title if just too small
70
65
  end
71
66
  end
@@ -104,25 +99,6 @@ module ResearchMetadataAnnouncement
104
99
 
105
100
  private
106
101
 
107
- def handle_resolver(uri)
108
- return unless uri
109
- resolver = 'doi.org'
110
- if uri.include? resolver
111
- uri
112
- else
113
- File.join resolver, uri
114
- end
115
- end
116
-
117
- def remove_full_stop(str)
118
- arr = str.split('')
119
- if arr.pop == '.' && arr.pop != '.'
120
- return str.chomp('.')
121
- else
122
- return str
123
- end
124
- end
125
-
126
102
  def new_phrase(resource)
127
103
  part_1 = 'New'
128
104
  part_2 = ''
@@ -130,7 +106,7 @@ module ResearchMetadataAnnouncement
130
106
  case resource.class.to_s
131
107
  when 'Puree::Model::Dataset'
132
108
  part_2 = 'dataset'
133
- when 'Puree::Model::Publication'
109
+ when 'Puree::Model::ResearchOutput'
134
110
  part_2 = resource.type.downcase
135
111
  end
136
112
  if part_2.empty?
@@ -140,16 +116,8 @@ module ResearchMetadataAnnouncement
140
116
  end
141
117
  end
142
118
 
143
- # Extract metadata from Pure
144
- #
145
- # @param id [String]
146
- # @param uuid [String]
147
- def extract(uuid: nil, id: nil)
148
- if !uuid.nil?
149
- @resource = @resource_extractor.find uuid: uuid
150
- else
151
- @resource = @resource_extractor.find id: id
152
- end
119
+ def prepare_uri
120
+ strip_uri_scheme @resource.doi if @resource && @resource.doi
153
121
  end
154
122
 
155
123
  def strip_uri_scheme(uri)
@@ -181,7 +149,7 @@ module ResearchMetadataAnnouncement
181
149
  end
182
150
 
183
151
  def make_extractor(resource_type)
184
- resource_class = "Puree::Extractor::#{resource_type.capitalize}"
152
+ resource_class = "Puree::Extractor::#{Puree::Util::String.titleize(resource_type)}"
185
153
  @resource_extractor = Object.const_get(resource_class).new @config
186
154
  end
187
155
 
@@ -7,22 +7,12 @@ module ResearchMetadataAnnouncement
7
7
  #
8
8
  class Dataset < ResearchMetadataAnnouncement::Transformer::Base
9
9
 
10
- # @param config [Hash]
11
- # @option config [String] :url The URL of the Pure host.
12
- # @option config [String] :username The username of the Pure host account.
13
- # @option config [String] :password The password of the Pure host account.
10
+ # @option (see ResearchMetadataAnnouncement::Transformer::Base::Resource#initialize)
14
11
  def initialize(config)
15
12
  super
16
13
  make_extractor :dataset
17
14
  end
18
15
 
19
- private
20
-
21
- def prepare_uri
22
- uri = strip_uri_scheme @resource.doi if @resource && @resource.doi
23
- handle_resolver uri
24
- end
25
-
26
16
  end
27
17
 
28
18
  end
@@ -0,0 +1,20 @@
1
+ module ResearchMetadataAnnouncement
2
+
3
+ module Transformer
4
+
5
+ # Extracts research output metadata from the Pure Research Information System and
6
+ # converts it into an announcement
7
+ #
8
+ class ResearchOutput < ResearchMetadataAnnouncement::Transformer::Base
9
+
10
+ # @option (see ResearchMetadataAnnouncement::Transformer::Base::Resource#initialize)
11
+ def initialize(config)
12
+ super
13
+ make_extractor :research_output
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+
20
+ end
@@ -1,5 +1,5 @@
1
1
  module ResearchMetadataAnnouncement
2
2
  # Semantic version number
3
3
  #
4
- VERSION = "0.4.2"
4
+ VERSION = "0.5.0"
5
5
  end
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.required_ruby_version = '~> 2.1'
25
25
 
26
- spec.add_runtime_dependency "puree", "~> 1.4"
26
+ spec.add_runtime_dependency "puree", "~> 2.0"
27
27
 
28
28
  spec.add_development_dependency "minitest-reporters", "~> 1.1"
29
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: research_metadata_announcement
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.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: 2018-01-18 00:00:00.000000000 Z
11
+ date: 2018-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puree
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.4'
19
+ version: '2.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.4'
26
+ version: '2.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest-reporters
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +53,7 @@ files:
53
53
  - lib/research_metadata_announcement.rb
54
54
  - lib/research_metadata_announcement/transformer/base.rb
55
55
  - lib/research_metadata_announcement/transformer/dataset.rb
56
- - lib/research_metadata_announcement/transformer/publication.rb
56
+ - lib/research_metadata_announcement/transformer/research_output.rb
57
57
  - lib/research_metadata_announcement/transformer/transformer.rb
58
58
  - lib/research_metadata_announcement/version.rb
59
59
  - research_metadata_announcement.gemspec
@@ -1,30 +0,0 @@
1
- module ResearchMetadataAnnouncement
2
-
3
- module Transformer
4
-
5
- # Extracts publication metadata from the Pure Research Information System and
6
- # converts it into an announcement
7
- #
8
- class Publication < ResearchMetadataAnnouncement::Transformer::Base
9
-
10
- # @param config [Hash]
11
- # @option config [String] :url The URL of the Pure host.
12
- # @option config [String] :username The username of the Pure host account.
13
- # @option config [String] :password The password of the Pure host account.
14
- def initialize(config)
15
- super
16
- make_extractor :publication
17
- end
18
-
19
- private
20
-
21
- def prepare_uri
22
- uri = strip_uri_scheme @resource.dois[0] if @resource && @resource.dois[0]
23
- handle_resolver uri
24
- end
25
-
26
- end
27
-
28
- end
29
-
30
- end