datacite_doi_ify 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7e7aacda4675cf6f5ee73cf69f59e31cdca8b974
4
+ data.tar.gz: 08883ffae7e22eb41b509d011060fe60017f2f69
5
+ SHA512:
6
+ metadata.gz: ee712aadad5d758a64561bfa75f66d61f65ca98dd8349fc35f6d426dfe5276c4541c61bd52741bd9235b77dea304e39e1bc73e7dccbee05bff9a48d310d17b1d
7
+ data.tar.gz: 2385e3181cf08867bb2ad9a8aa441ca3188ac62159650a7410030cd218751f85fe701dfa05213fc9c50a349ddb7255c16fe09211920d44559f5ad0357c8cea66
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.ruby-gemset ADDED
@@ -0,0 +1 @@
1
+ datacite_doi_ify
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.1.3
data/.travis.yml ADDED
@@ -0,0 +1,15 @@
1
+ language: ruby
2
+ bundler_args: --without production
3
+
4
+ rvm:
5
+ - 2.1.3
6
+
7
+ script:
8
+ - RAILS_ENV=test bundle exec rspec spec
9
+
10
+ notifications:
11
+ email:
12
+ recipients:
13
+ - thucquyendn@gmail.com
14
+ on_failure: change
15
+ on_success: never
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in datacite_doi_ify.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,11 @@
1
+ guard 'rspec' do
2
+ # watch /lib/ files
3
+ watch(%r{^lib/(.+).rb$}) do |m|
4
+ "spec/#{m[1]}_spec.rb"
5
+ end
6
+
7
+ # watch /spec/ files
8
+ watch(%r{^spec/(.+).rb$}) do |m|
9
+ "spec/#{m[1]}.rb"
10
+ end
11
+ end
data/LICENSE ADDED
@@ -0,0 +1,24 @@
1
+ Copyright (c) 2014, University of Manchester and HITS gGmbH
2
+ All rights reserved.
3
+
4
+
5
+ Redistribution and use in source and binary forms, with or without modification,
6
+ are permitted provided that the following conditions are met:
7
+
8
+ * Redistributions of source code must retain the above copyright notice, this list of conditions
9
+ and the following disclaimer.
10
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions
11
+ and the following disclaimer in the documentation and/or other materials provided with the distribution.
12
+ * Neither the name of the University of Manchester or HITS gGmbH,
13
+ nor the names of its contributors may be used to endorse or promote products
14
+ derived from this software without specific prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18
+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
20
+ INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22
+ HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
24
+ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,7 @@
1
+ [![Build Status](https://travis-ci.org/FAIRdom/datacite_doi_ify.png?branch=master)](https://travis-ci.org/FAIRdom/datacite_doi_ify)
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/datacitedoiify.png)](http://badge.fury.io/rb/datacitedoiify)
4
+
5
+ [![Coverage Status](https://coveralls.io/repos/FAIRdom/datacite_doi_ify/badge.png)](https://coveralls.io/r/FAIRdom/datacite_doi_ify)
6
+
7
+ [![Code Climate](https://codeclimate.com/github/FAIRdom/datacite_doi_ify/badges/gpa.svg)](https://codeclimate.com/github/FAIRdom/datacite_doi_ify)
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require 'rspec/core/rake_task'
2
+ require 'bundler/gem_tasks'
3
+
4
+ # Default directory to look in is `/specs`
5
+ # Run with `rake spec`
6
+ RSpec::Core::RakeTask.new(:spec) do |task|
7
+ task.rspec_opts = ['--color', '--format', 'nested']
8
+ end
9
+
10
+ task :default => :spec
@@ -0,0 +1,34 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "datacite_doi_ify/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "datacite_doi_ify"
7
+ s.version = DataciteDoiIfy::VERSION
8
+ s.authors = ["quyen nguyen"]
9
+ s.email = ["thucquyendn@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = "A ruby gem to working with datacite doi restful web service"
12
+ s.description = "Mint DOI and resolve DOI using Datacite restful web service"
13
+
14
+ s.rubyforge_project = "datacite_doi_ify"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ # s.add_development_dependency "rspec"
23
+ # s.add_runtime_dependency "rest-client"
24
+ s.add_development_dependency "rspec"
25
+ s.add_development_dependency "rspec-nc"
26
+ s.add_development_dependency "guard"
27
+ s.add_development_dependency "guard-rspec"
28
+ s.add_development_dependency "pry"
29
+ s.add_development_dependency "pry-remote"
30
+ s.add_development_dependency "pry-nav"
31
+ s.add_development_dependency "coveralls"
32
+ s.add_development_dependency "webmock"
33
+ s.add_development_dependency "vcr"
34
+ end
data/invalid_doi.xml ADDED
@@ -0,0 +1,25 @@
1
+ <resource xmlns="http://datacite.org/schema/kernel-3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd">
2
+ <creators>
3
+ <creator>
4
+ <creatorName>First, Last</creatorName>
5
+ </creator>
6
+ </creators>
7
+ <titles>
8
+ <title>For testing</title>
9
+ </titles>
10
+ <publisher>ABC</publisher>
11
+ <publicationYear>2013</publicationYear>
12
+ <subjects>
13
+ <subject>Assessment</subject>
14
+ <subject>Information Literacy</subject>
15
+ <subject>Engineering</subject>
16
+ </subjects>
17
+ <language>eng</language>
18
+ <resourceType resourceTypeGeneral="Dataset">Dataset</resourceType>
19
+ <version>1</version>
20
+ <descriptions>
21
+ <description descriptionType="Abstract">
22
+ A test
23
+ </description>
24
+ </descriptions>
25
+ </resource>
@@ -0,0 +1,2 @@
1
+ require "datacite_doi_ify/version"
2
+ require "datacite_doi_ify/datacite"
@@ -0,0 +1,45 @@
1
+ require 'rest-client'
2
+
3
+ class Datacite
4
+ ENDPOINT = 'https://mds.datacite.org'
5
+
6
+ def initialize(user_name, password)
7
+ @endpoint = RestClient::Resource.new(ENDPOINT, user_name, password)
8
+ end
9
+
10
+ def resolve doi
11
+ begin
12
+ response = @endpoint["doi/#{doi}"].get
13
+ rescue Exception => e
14
+ #error code
15
+ e.message[0..2]
16
+ end
17
+ end
18
+
19
+ def mint doi, url
20
+ begin
21
+ response = @endpoint['doi'].post "doi=#{doi}\nurl=#{url}", content_type: "text/plain;charset=UTF-8"
22
+ rescue Exception => e
23
+ #error code
24
+ e.message[0..2]
25
+ end
26
+ end
27
+
28
+ def upload_metadata metadata
29
+ begin
30
+ response = @endpoint['metadata'].post(metadata,content_type: 'application/xml;charset=UTF-8')
31
+ rescue Exception => e
32
+ #error code
33
+ e.message[0..2]
34
+ end
35
+ end
36
+
37
+ def metadata doi
38
+ begin
39
+ response = @endpoint["metadata/#{doi}"].get
40
+ rescue Exception => e
41
+ #error code
42
+ e.message[0..2]
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,3 @@
1
+ module DataciteDoiIfy
2
+ VERSION = "0.0.1"
3
+ end
data/my_test.xml ADDED
@@ -0,0 +1,26 @@
1
+ <resource xmlns="http://datacite.org/schema/kernel-3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd">
2
+ <identifier identifierType="DOI">10.5072/my_test</identifier>
3
+ <creators>
4
+ <creator>
5
+ <creatorName>First, Last</creatorName>
6
+ </creator>
7
+ </creators>
8
+ <titles>
9
+ <title>For testing</title>
10
+ </titles>
11
+ <publisher>ABC</publisher>
12
+ <publicationYear>2013</publicationYear>
13
+ <subjects>
14
+ <subject>Assessment</subject>
15
+ <subject>Information Literacy</subject>
16
+ <subject>Engineering</subject>
17
+ </subjects>
18
+ <language>eng</language>
19
+ <resourceType resourceTypeGeneral="Dataset">Dataset</resourceType>
20
+ <version>1</version>
21
+ <descriptions>
22
+ <description descriptionType="Abstract">
23
+ A test
24
+ </description>
25
+ </descriptions>
26
+ </resource>
@@ -0,0 +1,151 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test:test@mds.datacite.org/doi
6
+ body:
7
+ encoding: UTF-8
8
+ string: |-
9
+ doi=10.5072/MY_TEST
10
+ url=https://seek.sysmo-db.org
11
+ headers:
12
+ Accept:
13
+ - "*/*; q=0.5, application/xml"
14
+ Accept-Encoding:
15
+ - gzip, deflate
16
+ Content-Type:
17
+ - text/plain;charset=UTF-8
18
+ Content-Length:
19
+ - '49'
20
+ User-Agent:
21
+ - Ruby
22
+ response:
23
+ status:
24
+ code: 201
25
+ message: Created
26
+ headers:
27
+ Date:
28
+ - Tue, 04 Nov 2014 13:58:37 GMT
29
+ Pragma:
30
+ - no-cache
31
+ Expires:
32
+ - Thu, 01 Jan 1970 00:00:00 GMT
33
+ Cache-Control:
34
+ - no-cache
35
+ - no-store
36
+ Location:
37
+ - https://mds.datacite.org/doi/10.5072/MY_TEST
38
+ Content-Type:
39
+ - application/xml;charset=UTF-8
40
+ Content-Length:
41
+ - '2'
42
+ body:
43
+ encoding: UTF-8
44
+ string: OK
45
+ http_version:
46
+ recorded_at: Tue, 04 Nov 2014 13:58:39 GMT
47
+ - request:
48
+ method: get
49
+ uri: https://test:test@mds.datacite.org/doi/10.5072/MY_TEST
50
+ body:
51
+ encoding: US-ASCII
52
+ string: ''
53
+ headers:
54
+ Accept:
55
+ - "*/*; q=0.5, application/xml"
56
+ Accept-Encoding:
57
+ - gzip, deflate
58
+ User-Agent:
59
+ - Ruby
60
+ response:
61
+ status:
62
+ code: 200
63
+ message: OK
64
+ headers:
65
+ Date:
66
+ - Tue, 04 Nov 2014 13:33:23 GMT
67
+ Cache-Control:
68
+ - no-cache
69
+ - no-store
70
+ Expires:
71
+ - Thu, 01 Jan 1970 00:00:00 GMT
72
+ Pragma:
73
+ - no-cache
74
+ Content-Type:
75
+ - application/xml;charset=UTF-8
76
+ Content-Length:
77
+ - '25'
78
+ body:
79
+ encoding: UTF-8
80
+ string: https://seek.sysmo-db.org
81
+ http_version:
82
+ recorded_at: Tue, 04 Nov 2014 13:33:26 GMT
83
+ - request:
84
+ method: post
85
+ uri: https://test:test@mds.datacite.org/metadata
86
+ body:
87
+ encoding: UTF-8
88
+ string: |
89
+ <resource xmlns="http://datacite.org/schema/kernel-3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd">
90
+ <identifier identifierType="DOI">10.5072/my_test</identifier>
91
+ <creators>
92
+ <creator>
93
+ <creatorName>First, Last</creatorName>
94
+ </creator>
95
+ </creators>
96
+ <titles>
97
+ <title>For testing</title>
98
+ </titles>
99
+ <publisher>ABC</publisher>
100
+ <publicationYear>2013</publicationYear>
101
+ <subjects>
102
+ <subject>Assessment</subject>
103
+ <subject>Information Literacy</subject>
104
+ <subject>Engineering</subject>
105
+ </subjects>
106
+ <language>eng</language>
107
+ <resourceType resourceTypeGeneral="Dataset">Dataset</resourceType>
108
+ <version>1</version>
109
+ <descriptions>
110
+ <description descriptionType="Abstract">
111
+ A test
112
+ </description>
113
+ </descriptions>
114
+ </resource>
115
+ headers:
116
+ Accept:
117
+ - "*/*; q=0.5, application/xml"
118
+ Accept-Encoding:
119
+ - gzip, deflate
120
+ Content-Type:
121
+ - application/xml;charset=UTF-8
122
+ Content-Length:
123
+ - '821'
124
+ User-Agent:
125
+ - Ruby
126
+ response:
127
+ status:
128
+ code: 201
129
+ message: Created
130
+ headers:
131
+ Date:
132
+ - Tue, 04 Nov 2014 13:50:10 GMT
133
+ Pragma:
134
+ - no-cache
135
+ Expires:
136
+ - Thu, 01 Jan 1970 00:00:00 GMT
137
+ Cache-Control:
138
+ - no-cache
139
+ - no-store
140
+ Location:
141
+ - https://mds.datacite.org/metadata/10.5072/my_test
142
+ Content-Type:
143
+ - application/xml;charset=UTF-8
144
+ Content-Length:
145
+ - '20'
146
+ body:
147
+ encoding: UTF-8
148
+ string: OK (10.5072/my_test)
149
+ http_version:
150
+ recorded_at: Tue, 04 Nov 2014 13:50:13 GMT
151
+ recorded_with: VCR 2.9.3
@@ -0,0 +1,45 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://test:test@mds.datacite.org/doi
6
+ body:
7
+ encoding: UTF-8
8
+ string: |-
9
+ doi=10.5072/new_doi
10
+ url=https://seek.sysmo-db.org
11
+ headers:
12
+ Accept:
13
+ - "*/*; q=0.5, application/xml"
14
+ Accept-Encoding:
15
+ - gzip, deflate
16
+ Content-Type:
17
+ - text/plain;charset=UTF-8
18
+ Content-Length:
19
+ - '49'
20
+ User-Agent:
21
+ - Ruby
22
+ response:
23
+ status:
24
+ code: 412
25
+ message: Precondition Failed
26
+ headers:
27
+ Date:
28
+ - Tue, 04 Nov 2014 15:21:47 GMT
29
+ Pragma:
30
+ - no-cache
31
+ Expires:
32
+ - Thu, 01 Jan 1970 00:00:00 GMT
33
+ Cache-Control:
34
+ - no-cache
35
+ - no-store
36
+ Content-Type:
37
+ - application/xml;charset=UTF-8
38
+ Content-Length:
39
+ - '36'
40
+ body:
41
+ encoding: UTF-8
42
+ string: You have to register metadata first!
43
+ http_version:
44
+ recorded_at: Tue, 04 Nov 2014 15:21:49 GMT
45
+ recorded_with: VCR 2.9.3