datacite_doi_ify 0.0.1 → 1.0.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/.gitignore +2 -0
- data/.ruby-version +1 -1
- data/.travis.yml +5 -2
- data/README.md +3 -3
- data/datacite_doi_ify.gemspec +15 -14
- data/lib/datacite_doi_ify/datacite.rb +7 -10
- data/lib/datacite_doi_ify/version.rb +1 -1
- data/spec/datacite_doi_ify_spec.rb +15 -10
- data/{invalid_doi.xml → spec/metadata_files/invalid_doi.xml} +0 -0
- data/{my_test.xml → spec/metadata_files/my_test.xml} +0 -0
- data/{test_doi.xml → spec/metadata_files/test_doi.xml} +0 -0
- metadata +65 -48
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dd01ed9332d1f62fe3ae36fad4cbec2aa5ad514c
|
4
|
+
data.tar.gz: 426f292c8bbe2598497f70e81b800576741ce38b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71c4d58d0ae9397935532294d9eadaae4e56bedf37c742682b1afefa58770b4e9f9228cf490e0304a2cdd2ae6ccb811e7549eb5d5aa9515b8408605b8f19f262
|
7
|
+
data.tar.gz: c05c155f2a1ad4ee5b8730df478e1422d10d4d0781317a7e0dbcaa1407e4a15b93268ab587ebeac66f05f97fdd3d508d22b59d5a3c7054fb0fa3f35e49b2011e
|
data/.gitignore
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.1.
|
1
|
+
ruby-2.1.5
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
[](https://travis-ci.org/FAIRdom/datacite_doi_ify)
|
2
2
|
|
3
|
-
[](http://badge.fury.io/rb/datacite_doi_ify)
|
4
4
|
|
5
|
-
[](https://coveralls.io/r/FAIRdom/datacite_doi_ify)
|
5
|
+
[](https://coveralls.io/r/FAIRdom/datacite_doi_ify?branch=master)
|
6
6
|
|
7
|
-
[](https://codeclimate.com/github/FAIRdom/datacite_doi_ify)
|
7
|
+
[](https://codeclimate.com/github/FAIRdom/datacite_doi_ify)
|
data/datacite_doi_ify.gemspec
CHANGED
@@ -7,9 +7,9 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.version = DataciteDoiIfy::VERSION
|
8
8
|
s.authors = ["quyen nguyen"]
|
9
9
|
s.email = ["thucquyendn@gmail.com"]
|
10
|
-
s.homepage = ""
|
11
|
-
s.summary = "A ruby gem
|
12
|
-
s.description = "Mint DOI and resolve DOI using Datacite restful web service"
|
10
|
+
s.homepage = "https://seek.sysmo-db.org/people/372"
|
11
|
+
s.summary = "A ruby gem for working with the DataCite doi restful web service"
|
12
|
+
s.description = "Mint a DOI and resolve a DOI using the Datacite restful web service"
|
13
13
|
|
14
14
|
s.rubyforge_project = "datacite_doi_ify"
|
15
15
|
|
@@ -20,15 +20,16 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
# specify any dependencies here; for example:
|
22
22
|
# s.add_development_dependency "rspec"
|
23
|
-
|
24
|
-
|
25
|
-
s.add_development_dependency "rspec
|
26
|
-
s.add_development_dependency "
|
27
|
-
s.add_development_dependency "guard
|
28
|
-
s.add_development_dependency "
|
29
|
-
s.add_development_dependency "pry
|
30
|
-
s.add_development_dependency "pry-
|
31
|
-
s.add_development_dependency "
|
32
|
-
s.add_development_dependency "
|
33
|
-
s.add_development_dependency "
|
23
|
+
s.add_runtime_dependency "rest-client", "~> 1.7"
|
24
|
+
|
25
|
+
s.add_development_dependency "rspec", "~> 3.1"
|
26
|
+
s.add_development_dependency "rspec-nc", "~> 0.2"
|
27
|
+
s.add_development_dependency "guard", "~> 2.8"
|
28
|
+
s.add_development_dependency "guard-rspec", "~> 4.3"
|
29
|
+
s.add_development_dependency "pry", "~> 0.10"
|
30
|
+
s.add_development_dependency "pry-remote", "~> 0.1"
|
31
|
+
s.add_development_dependency "pry-nav", "~> 0.2"
|
32
|
+
s.add_development_dependency "coveralls", "~> 0.7"
|
33
|
+
s.add_development_dependency "webmock", "~> 1.20"
|
34
|
+
s.add_development_dependency "vcr", "~> 2.9"
|
34
35
|
end
|
@@ -3,16 +3,16 @@ require 'rest-client'
|
|
3
3
|
class Datacite
|
4
4
|
ENDPOINT = 'https://mds.datacite.org'
|
5
5
|
|
6
|
-
def initialize(user_name, password)
|
7
|
-
|
6
|
+
def initialize(user_name, password, endpoint=nil)
|
7
|
+
endpoint ||= ENDPOINT
|
8
|
+
@endpoint = RestClient::Resource.new(endpoint, user_name, password)
|
8
9
|
end
|
9
10
|
|
10
11
|
def resolve doi
|
11
12
|
begin
|
12
13
|
response = @endpoint["doi/#{doi}"].get
|
13
14
|
rescue Exception => e
|
14
|
-
|
15
|
-
e.message[0..2]
|
15
|
+
e.message
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -20,8 +20,7 @@ class Datacite
|
|
20
20
|
begin
|
21
21
|
response = @endpoint['doi'].post "doi=#{doi}\nurl=#{url}", content_type: "text/plain;charset=UTF-8"
|
22
22
|
rescue Exception => e
|
23
|
-
|
24
|
-
e.message[0..2]
|
23
|
+
e.message
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
@@ -29,8 +28,7 @@ class Datacite
|
|
29
28
|
begin
|
30
29
|
response = @endpoint['metadata'].post(metadata,content_type: 'application/xml;charset=UTF-8')
|
31
30
|
rescue Exception => e
|
32
|
-
|
33
|
-
e.message[0..2]
|
31
|
+
e.message
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
@@ -38,8 +36,7 @@ class Datacite
|
|
38
36
|
begin
|
39
37
|
response = @endpoint["metadata/#{doi}"].get
|
40
38
|
rescue Exception => e
|
41
|
-
|
42
|
-
e.message[0..2]
|
39
|
+
e.message
|
43
40
|
end
|
44
41
|
end
|
45
42
|
end
|
@@ -15,19 +15,19 @@ describe DataciteDoiIfy do
|
|
15
15
|
invalid_user = 'invalid'
|
16
16
|
invalid_password = 'invalid'
|
17
17
|
endpoint = Datacite.new(invalid_user, invalid_password)
|
18
|
-
expect(endpoint.resolve(doi)).to eq('401')
|
18
|
+
expect(endpoint.resolve(doi)[0..2]).to eq('401')
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'returns a 404 for not-found DOI', :vcr => {:cassette_name => "resolve_a_DOI/returns_a_404_for_not-found_DOI"} do
|
22
22
|
doi = 'non-existing'
|
23
|
-
expect(endpoint.resolve(doi)).to eq('404')
|
23
|
+
expect(endpoint.resolve(doi)[0..2]).to eq('404')
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
27
|
describe 'mint a DOI' do
|
28
28
|
context 'DOI does not exist' do
|
29
29
|
it 'mints a new DOI', :vcr => {:cassette_name => "mint_a_DOI/mints_a_new_DOI"} do
|
30
|
-
metadata =
|
30
|
+
metadata = open_test_metadata('my_test.xml')
|
31
31
|
expect(endpoint.upload_metadata(metadata)).to eq('OK (10.5072/my_test)')
|
32
32
|
expect(endpoint.mint(doi, url)).to eq('OK')
|
33
33
|
expect(endpoint.resolve(doi)).to eq(url)
|
@@ -36,14 +36,14 @@ describe DataciteDoiIfy do
|
|
36
36
|
it 'returns 412 if metadata has not been uploaded', :vcr => {:cassette_name => "mint_a_DOI/returns_412_if_metadata_has_not_been_uploaded"} do
|
37
37
|
new_doi = "10.5072/new_doi"
|
38
38
|
#412 Precondition failed
|
39
|
-
expect(endpoint.mint(new_doi, url)).to eq('412')
|
39
|
+
expect(endpoint.mint(new_doi, url)[0..2]).to eq('412')
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
context 'DOI exists' do
|
44
44
|
it 'updates the URL if different', :vcr => {:cassette_name => "mint_a_DOI/updates_the_URL_if_different"} do
|
45
45
|
#use test_doi.xml so that it does not update the url of my_test.xml
|
46
|
-
metadata =
|
46
|
+
metadata = open_test_metadata('test_doi.xml')
|
47
47
|
doi = '10.5072/test_doi'
|
48
48
|
expect(endpoint.upload_metadata(metadata)).to eq('OK (10.5072/test_doi)')
|
49
49
|
expect(endpoint.mint(doi, url)).to eq('OK')
|
@@ -58,26 +58,26 @@ describe DataciteDoiIfy do
|
|
58
58
|
|
59
59
|
describe 'retrieve metadata' do
|
60
60
|
it 'returns metadata associated with a given DOI', :vcr => {:cassette_name => "retrieve_metadata/returns_metadata_associated_with_a_given_DOI"} do
|
61
|
-
metadata =
|
61
|
+
metadata = open_test_metadata('my_test.xml')
|
62
62
|
expect(endpoint.metadata(doi)).to eq(metadata)
|
63
63
|
end
|
64
64
|
|
65
65
|
it 'returns 404 for not found DOI', :vcr => {:cassette_name => "retrieve_metadata/returns_404_for_not_found_DOI"} do
|
66
66
|
doi = 'non-existing'
|
67
|
-
expect(endpoint.metadata(doi)).to eq('404')
|
67
|
+
expect(endpoint.metadata(doi)[0..2]).to eq('404')
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
71
|
describe 'upload metadata' do
|
72
72
|
it 'creates new version of metadata', :vcr => {:cassette_name => "upload_metadata/creates_new_version_of_metadata"} do
|
73
|
-
metadata =
|
73
|
+
metadata = open_test_metadata('my_test.xml')
|
74
74
|
expect(endpoint.upload_metadata(metadata)).to eq('OK (10.5072/my_test)')
|
75
75
|
end
|
76
76
|
|
77
77
|
it 'returns 400 for an invalid xml', :vcr => {:cassette_name => "upload_metadata/returns_400_for_an_invalid_xml"} do
|
78
78
|
# metadata without a DOI => Bad request
|
79
|
-
metadata =
|
80
|
-
expect(endpoint.upload_metadata(metadata)).to eq('400')
|
79
|
+
metadata = open_test_metadata('invalid_doi.xml')
|
80
|
+
expect(endpoint.upload_metadata(metadata)[0..2]).to eq('400')
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
@@ -91,5 +91,10 @@ describe DataciteDoiIfy do
|
|
91
91
|
end
|
92
92
|
end
|
93
93
|
|
94
|
+
def open_test_metadata filename
|
95
|
+
file = File.join "spec/","/metadata_files/", filename
|
96
|
+
open(file).read
|
97
|
+
end
|
98
|
+
|
94
99
|
#TODO: Media API
|
95
100
|
end
|
File without changes
|
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,156 +1,170 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datacite_doi_ify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- quyen nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rest-client
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: rspec
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
16
30
|
requirements:
|
17
|
-
- - "
|
31
|
+
- - "~>"
|
18
32
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
33
|
+
version: '3.1'
|
20
34
|
type: :development
|
21
35
|
prerelease: false
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
23
37
|
requirements:
|
24
|
-
- - "
|
38
|
+
- - "~>"
|
25
39
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
40
|
+
version: '3.1'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec-nc
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - "
|
45
|
+
- - "~>"
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
47
|
+
version: '0.2'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- - "
|
52
|
+
- - "~>"
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
54
|
+
version: '0.2'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: guard
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- - "
|
59
|
+
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '2.8'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- - "
|
66
|
+
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '2.8'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: guard-rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- - "
|
73
|
+
- - "~>"
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
75
|
+
version: '4.3'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- - "
|
80
|
+
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
82
|
+
version: '4.3'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: pry
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- - "
|
87
|
+
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
89
|
+
version: '0.10'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
96
|
+
version: '0.10'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: pry-remote
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- - "
|
101
|
+
- - "~>"
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
103
|
+
version: '0.1'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- - "
|
108
|
+
- - "~>"
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
110
|
+
version: '0.1'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: pry-nav
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
100
114
|
requirements:
|
101
|
-
- - "
|
115
|
+
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
117
|
+
version: '0.2'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
|
-
- - "
|
122
|
+
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
124
|
+
version: '0.2'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: coveralls
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
114
128
|
requirements:
|
115
|
-
- - "
|
129
|
+
- - "~>"
|
116
130
|
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
131
|
+
version: '0.7'
|
118
132
|
type: :development
|
119
133
|
prerelease: false
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
121
135
|
requirements:
|
122
|
-
- - "
|
136
|
+
- - "~>"
|
123
137
|
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
138
|
+
version: '0.7'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: webmock
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
128
142
|
requirements:
|
129
|
-
- - "
|
143
|
+
- - "~>"
|
130
144
|
- !ruby/object:Gem::Version
|
131
|
-
version: '
|
145
|
+
version: '1.20'
|
132
146
|
type: :development
|
133
147
|
prerelease: false
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
135
149
|
requirements:
|
136
|
-
- - "
|
150
|
+
- - "~>"
|
137
151
|
- !ruby/object:Gem::Version
|
138
|
-
version: '
|
152
|
+
version: '1.20'
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: vcr
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
142
156
|
requirements:
|
143
|
-
- - "
|
157
|
+
- - "~>"
|
144
158
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
159
|
+
version: '2.9'
|
146
160
|
type: :development
|
147
161
|
prerelease: false
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
149
163
|
requirements:
|
150
|
-
- - "
|
164
|
+
- - "~>"
|
151
165
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
153
|
-
description: Mint DOI and resolve DOI using Datacite restful web service
|
166
|
+
version: '2.9'
|
167
|
+
description: Mint a DOI and resolve a DOI using the Datacite restful web service
|
154
168
|
email:
|
155
169
|
- thucquyendn@gmail.com
|
156
170
|
executables: []
|
@@ -168,11 +182,9 @@ files:
|
|
168
182
|
- README.md
|
169
183
|
- Rakefile
|
170
184
|
- datacite_doi_ify.gemspec
|
171
|
-
- invalid_doi.xml
|
172
185
|
- lib/datacite_doi_ify.rb
|
173
186
|
- lib/datacite_doi_ify/datacite.rb
|
174
187
|
- lib/datacite_doi_ify/version.rb
|
175
|
-
- my_test.xml
|
176
188
|
- spec/cassettes/mint_a_DOI/mints_a_new_DOI.yml
|
177
189
|
- spec/cassettes/mint_a_DOI/returns_412_if_metadata_has_not_been_uploaded.yml
|
178
190
|
- spec/cassettes/mint_a_DOI/updates_the_URL_if_different.yml
|
@@ -184,9 +196,11 @@ files:
|
|
184
196
|
- spec/cassettes/upload_metadata/creates_new_version_of_metadata.yml
|
185
197
|
- spec/cassettes/upload_metadata/returns_400_for_an_invalid_xml.yml
|
186
198
|
- spec/datacite_doi_ify_spec.rb
|
199
|
+
- spec/metadata_files/invalid_doi.xml
|
200
|
+
- spec/metadata_files/my_test.xml
|
201
|
+
- spec/metadata_files/test_doi.xml
|
187
202
|
- spec/spec_helper.rb
|
188
|
-
|
189
|
-
homepage: ''
|
203
|
+
homepage: https://seek.sysmo-db.org/people/372
|
190
204
|
licenses: []
|
191
205
|
metadata: {}
|
192
206
|
post_install_message:
|
@@ -208,7 +222,7 @@ rubyforge_project: datacite_doi_ify
|
|
208
222
|
rubygems_version: 2.2.2
|
209
223
|
signing_key:
|
210
224
|
specification_version: 4
|
211
|
-
summary: A ruby gem
|
225
|
+
summary: A ruby gem for working with the DataCite doi restful web service
|
212
226
|
test_files:
|
213
227
|
- spec/cassettes/mint_a_DOI/mints_a_new_DOI.yml
|
214
228
|
- spec/cassettes/mint_a_DOI/returns_412_if_metadata_has_not_been_uploaded.yml
|
@@ -221,4 +235,7 @@ test_files:
|
|
221
235
|
- spec/cassettes/upload_metadata/creates_new_version_of_metadata.yml
|
222
236
|
- spec/cassettes/upload_metadata/returns_400_for_an_invalid_xml.yml
|
223
237
|
- spec/datacite_doi_ify_spec.rb
|
238
|
+
- spec/metadata_files/invalid_doi.xml
|
239
|
+
- spec/metadata_files/my_test.xml
|
240
|
+
- spec/metadata_files/test_doi.xml
|
224
241
|
- spec/spec_helper.rb
|