cirneco 0.9.26 → 0.9.27

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
  SHA256:
3
- metadata.gz: 1cc8643645d23b3d2995639c6ee153e006547918e4fffa0cd64063a9628722b0
4
- data.tar.gz: f66ce1ea88a7b0f3b80fa3625d50bcc1f48e5a97761baab5f7b36f9e1a2bbfac
3
+ metadata.gz: ec85888aef2b21ee69038033d3621ea95e54f09a11dc02104394746a8d0e1d32
4
+ data.tar.gz: dcc0d3ea2fca7104ee5c5931e893932a6c9b1d477fe8a12b826f77af73521321
5
5
  SHA512:
6
- metadata.gz: 902fdaeccbd4f869e97ed44fbbd91fa77d7430e25ab9612a8e446c278f0402db241cc54a07772490a8a80d2227dda5f299837a83621f25796c528ad6bfba146d
7
- data.tar.gz: 636c9bf5ea8b5f9049241ded6fc0d7a16ab08372b4b2d5a2d46d3de440ce62512d4effe5a10f7ac0d275749ec1b9a8e338fcb71fd35a00371123c6e57d1d79e0
6
+ metadata.gz: d81746148cb2aa4f6ccf0c0c6260616cdb361dc0352ae75625bfc5c1ca708b4f491cf10ad4b89d8ff0e33d4b6a8d5f936f925cb56be7f0eacb8992fe92026be4
7
+ data.tar.gz: 4bf3bbd0d6be50310e2a64ec5d2cd4862ddbef80b54354ed841de9d8c98cb4a4c9d849695136769ac59d9cc8c6f29aa27b9f06796e3232b9a84d50f0a1f8be7c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cirneco (0.9.26)
4
+ cirneco (0.9.27)
5
5
  activesupport (>= 4.2.5, < 6)
6
6
  base32-url (~> 0.5)
7
7
  bergamasco (~> 0.3)
@@ -15,7 +15,7 @@ PATH
15
15
  GEM
16
16
  remote: https://rubygems.org/
17
17
  specs:
18
- activesupport (5.2.1)
18
+ activesupport (5.2.2)
19
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
20
20
  i18n (>= 0.7, < 2)
21
21
  minitest (~> 5.1)
@@ -36,19 +36,22 @@ GEM
36
36
  safe_yaml (~> 1.0, >= 1.0.4)
37
37
  bibtex-ruby (4.4.7)
38
38
  latex-decode (~> 0.0)
39
- bolognese (0.14.1)
39
+ bolognese (0.15.9)
40
40
  activesupport (>= 4.2.5, < 6)
41
41
  benchmark_methods (~> 0.7)
42
42
  bibtex-ruby (~> 4.1)
43
43
  builder (~> 3.2, >= 3.2.2)
44
+ citeproc-ruby (~> 1.1, >= 1.1.10)
44
45
  colorize (~> 0.8.1)
46
+ csl-styles (~> 1.0, >= 1.0.1.8)
47
+ edtf (~> 3.0, >= 3.0.4)
45
48
  gender_detector (~> 0.1.2)
46
49
  iso8601 (~> 0.9.1)
47
50
  json-ld (~> 2.1, >= 2.1.2)
48
51
  jsonlint (~> 0.2.0)
49
52
  loofah (~> 2.0, >= 2.0.3)
50
53
  maremma (>= 3.5.7, < 5)
51
- namae (~> 0.11.3)
54
+ namae (~> 1.0)
52
55
  nokogiri (~> 1.8.1)
53
56
  oj (>= 2.8.3)
54
57
  postrank-uri (~> 1.0, >= 1.0.18)
@@ -56,21 +59,32 @@ GEM
56
59
  rdf-turtle (~> 2.2)
57
60
  thor (~> 0.19)
58
61
  builder (3.2.3)
62
+ citeproc (1.0.9)
63
+ namae (~> 1.0)
64
+ citeproc-ruby (1.1.10)
65
+ citeproc (~> 1.0, >= 1.0.9)
66
+ csl (~> 1.5)
59
67
  codeclimate-test-reporter (1.0.7)
60
68
  simplecov
61
69
  colorize (0.8.1)
62
- concurrent-ruby (1.0.5)
70
+ concurrent-ruby (1.1.3)
63
71
  crack (0.4.3)
64
72
  safe_yaml (~> 1.0.0)
65
73
  crass (1.0.4)
74
+ csl (1.5.0)
75
+ namae (~> 1.0)
76
+ csl-styles (1.0.1.9)
77
+ csl (~> 1.0)
66
78
  diff-lcs (1.3)
67
79
  docile (1.1.5)
68
80
  dotenv (2.5.0)
69
81
  ebnf (1.1.3)
70
82
  rdf (~> 3.0)
71
83
  sxp (~> 1.0)
84
+ edtf (3.0.4)
85
+ activesupport (>= 3.0, < 6.0)
72
86
  excon (0.62.0)
73
- faraday (0.15.2)
87
+ faraday (0.15.4)
74
88
  multipart-post (>= 1.2, < 3)
75
89
  faraday-encoding (0.0.5)
76
90
  faraday
@@ -85,7 +99,7 @@ GEM
85
99
  concurrent-ruby (~> 1.0)
86
100
  hashdiff (0.3.7)
87
101
  htmlentities (4.3.4)
88
- i18n (1.1.0)
102
+ i18n (1.2.0)
89
103
  concurrent-ruby (~> 1.0)
90
104
  iso8601 (0.9.1)
91
105
  json (2.1.0)
@@ -97,7 +111,7 @@ GEM
97
111
  trollop (~> 2)
98
112
  latex-decode (0.3.1)
99
113
  link_header (0.0.8)
100
- loofah (2.2.2)
114
+ loofah (2.2.3)
101
115
  crass (~> 1.0.2)
102
116
  nokogiri (>= 1.5.9)
103
117
  maremma (4.1.1)
@@ -115,7 +129,7 @@ GEM
115
129
  minitest (5.11.3)
116
130
  multi_json (1.13.1)
117
131
  multipart-post (2.0.0)
118
- namae (0.11.3)
132
+ namae (1.0.1)
119
133
  nokogiri (1.8.4)
120
134
  mini_portile2 (~> 2.3.0)
121
135
  oj (2.18.5)
@@ -129,7 +143,7 @@ GEM
129
143
  rack-test (0.8.3)
130
144
  rack (>= 1.0, < 3)
131
145
  rake (12.3.1)
132
- rdf (3.0.3)
146
+ rdf (3.0.7)
133
147
  hamster (~> 3.0)
134
148
  link_header (~> 0.0, >= 0.0.8)
135
149
  rdf-aggregate-repo (2.2.1)
@@ -175,9 +189,9 @@ GEM
175
189
  sxp (1.0.1)
176
190
  rdf (>= 2.2, < 4.0)
177
191
  temple (0.8.0)
178
- thor (0.20.0)
192
+ thor (0.20.3)
179
193
  thread_safe (0.3.6)
180
- tilt (2.0.8)
194
+ tilt (2.0.9)
181
195
  trollop (2.9.9)
182
196
  tzinfo (1.2.5)
183
197
  thread_safe (~> 0.1)
data/README.md CHANGED
@@ -140,6 +140,20 @@ Transfer a list of DOIs. A list of DOIs must be provided in a file
140
140
  cirneco doi transfer --target DATACITE.DATACITE --jwt {YOUR-JSON-WEB-TOKEN} ./doi_transfer.txt
141
141
  ```
142
142
 
143
+ Change the state of a list of DOIs. Note that all DOIS in the list must be in the ![previous state](https://support.datacite.org/docs/doi-states). A list of DOIs must be provided in a file
144
+
145
+ ```
146
+ 10.5438/5aep-2n86
147
+ 10.5438/cd2b-xj80
148
+ ```
149
+
150
+ In this example, we change alist of `registered` DOI to `findable` DOIS.
151
+
152
+ ```shell
153
+ cirneco doi bulk_state_change --target_state findable ./test_doi_status_change.csv
154
+ ```
155
+
156
+
143
157
  ## Development
144
158
 
145
159
  We use rspec for unit testing:
data/lib/cirneco/api.rb CHANGED
@@ -109,5 +109,27 @@ module Cirneco
109
109
  end
110
110
  response
111
111
  end
112
+
113
+ def update_rest_doi(doi, options={})
114
+ return OpenStruct.new(body: { "errors" => [{ "title" => "JWT or Username or password missing" }] }) unless options[:jwt].present? || (options[:username].present? && options[:password].present?)
115
+
116
+ api_url = options[:sandbox] ? 'https://api.test.datacite.org' : 'https://api.datacite.org'
117
+
118
+ url = URI.encode("#{api_url}/dois/#{doi}")
119
+ if options[:jwt].present?
120
+ Maremma.patch(url, content_type: 'application/vnd.api+json;charset=UTF-8', data: options[:data], bearer: options[:jwt])
121
+ else
122
+ Maremma.patch(url, content_type: 'application/vnd.api+json;charset=UTF-8', data: options[:data], username: options[:username], password: options[:password])
123
+ end
124
+ end
125
+
126
+ def get_rest_doi(doi, options={})
127
+ return OpenStruct.new(body: { "errors" => [{ "title" => "Username or password missing" }] }) unless options[:username].present? && options[:password].present?
128
+
129
+ api_url = options[:sandbox] ? 'https://api.test.datacite.org' : 'https://api.datacite.org'
130
+
131
+ url = "#{api_url}/dois/#{doi}"
132
+ Maremma.get(url, accept: 'application/vnd.api+json;charset=UTF-8', username: options[:username], password: options[:password], raw: true)
133
+ end
112
134
  end
113
135
  end
data/lib/cirneco/doi.rb CHANGED
@@ -97,7 +97,7 @@ module Cirneco
97
97
  def decode(doi)
98
98
  number = decode_doi(doi)
99
99
 
100
- if number > 0
100
+ unless number.nil?
101
101
  puts "DOI #{doi} was encoded with #{number}"
102
102
  else
103
103
  puts "DOI #{doi} could not be decoded"
@@ -106,7 +106,7 @@ module Cirneco
106
106
 
107
107
  desc "check DOI", "check DOI using base32-url checksum"
108
108
  def check(doi)
109
- if decode_doi(doi) > 0
109
+ unless decode_doi(doi).nil?
110
110
  puts "Checksum for #{doi} is valid"
111
111
  else
112
112
  puts "Checksum for #{doi} is not valid"
@@ -138,5 +138,52 @@ module Cirneco
138
138
 
139
139
  puts "#{count} DOIs transfered."
140
140
  end
141
+
142
+ desc "change DOIs state", "modify states of list of DOIs"
143
+ method_option :target_state, :type => :string
144
+ method_option :username, :default => ENV['MDS_USERNAME']
145
+ method_option :password, :default => ENV['MDS_PASSWORD']
146
+ method_option :sandbox, :type => :boolean, :force => false
147
+ method_option :jwt, :default => ENV['JWT']
148
+ def bulk_state_change(file)
149
+ count = 0
150
+ File.foreach(file) do |line|
151
+ doi = line.rstrip
152
+ next unless doi.present?
153
+
154
+ previous_state, operation = case options[:target_state]
155
+ when "findable"
156
+ ["registered", "publish"]
157
+ when "registered"
158
+ ["draft", "register"]
159
+ end
160
+
161
+ meta = generate_state_change_template({operation: operation})
162
+
163
+ metadata_reponse = get_rest_doi(doi, options)
164
+
165
+ unless [200].include?(metadata_reponse.status)
166
+ puts "#{doi} was not found #{metadata_reponse.status}"
167
+ next
168
+ end
169
+
170
+ metadata = JSON.parse(metadata_reponse.body.fetch("data", []))
171
+ if metadata.dig("data","attributes","state") == previous_state
172
+ response = update_rest_doi(doi, options.merge(data: meta.to_json))
173
+ else
174
+ puts "#{doi} is in the wrong state for change. #{doi} was not changed"
175
+ next
176
+ end
177
+
178
+ if [200, 201].include?(response.status)
179
+ puts "#{doi} Updated to #{options[:target_state]}."
180
+ count += 1
181
+ else
182
+ puts "Error: #{doi} " + response.body["errors"].first.fetch("title", "An error occured")
183
+ end
184
+ end
185
+
186
+ puts "#{count} DOIs updated."
187
+ end
141
188
  end
142
189
  end
data/lib/cirneco/utils.rb CHANGED
@@ -38,9 +38,21 @@ module Cirneco
38
38
  response
39
39
  end
40
40
 
41
+ def generate_state_change_template(options={})
42
+ response = {
43
+ "data" => {
44
+ "type" => "dois",
45
+ "attributes" => {
46
+ "event" => options[:operation]
47
+ }
48
+ }
49
+ }
50
+ response
51
+ end
52
+
41
53
  def decode_doi(doi)
42
54
  prefix, string = doi.split('/', 2)
43
- Base32::URL.decode(string, checksum: true).to_i
55
+ Base32::URL.decode(string, checksum: true)
44
56
  end
45
57
 
46
58
  def encode_doi(prefix, options={})
@@ -1,3 +1,3 @@
1
1
  module Cirneco
2
- VERSION = "0.9.26"
2
+ VERSION = "0.9.27"
3
3
  end
data/spec/api_spec.rb CHANGED
@@ -94,5 +94,13 @@ describe Cirneco::Work, vcr: true, :order => :defined do
94
94
  expect(media).to eq([{:mime_type=>"application/pdf", :url=>"http://www.datacite.org/cirneco-test.pdf"}])
95
95
  end
96
96
  end
97
+
98
+ describe "get_rest_doi" do
99
+ it 'should get doi' do
100
+ r = subject.get_rest_doi(subject.doi, options)
101
+ response = JSON.parse(r.body.fetch("data", []))
102
+ expect(response.dig("data","id")).to eq("10.5438/6brg-2m37")
103
+ end
104
+ end
97
105
  end
98
106
  end
data/spec/doi_spec.rb CHANGED
@@ -70,5 +70,9 @@ describe Cirneco::Doi do
70
70
  doi = "5072/0000-03VA"
71
71
  expect { subject.check doi }.to output("Checksum for #{doi} is not valid\n").to_stdout
72
72
  end
73
+ it 'checks a doi usercase' do
74
+ doi = "5072/0000-0098"
75
+ expect { subject.check doi }.to output("Checksum for #{doi} is valid\n").to_stdout
76
+ end
73
77
  end
74
78
  end
@@ -0,0 +1,225 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: get
5
+ uri: https://api.test.datacite.org/dois/10.5438/6brg-2m37
6
+ body:
7
+ encoding: US-ASCII
8
+ string: ''
9
+ headers:
10
+ User-Agent:
11
+ - Mozilla/5.0 (compatible; Maremma/4.1.1; +https://github.com/datacite/maremma)
12
+ Accept:
13
+ - application/vnd.api+json;charset=UTF-8
14
+ Authorization:
15
+ - Basic <MDS_TOKEN>
16
+ response:
17
+ status:
18
+ code: 200
19
+ message: OK
20
+ headers:
21
+ Date:
22
+ - Mon, 07 Jan 2019 14:53:06 GMT
23
+ Content-Type:
24
+ - application/json; charset=utf-8
25
+ Connection:
26
+ - keep-alive
27
+ Status:
28
+ - 200 OK
29
+ Cache-Control:
30
+ - max-age=0, private, must-revalidate
31
+ Vary:
32
+ - Accept-Encoding, Origin
33
+ X-Credential-Username:
34
+ - datacite
35
+ X-Request-Id:
36
+ - 79fa6e0e-6114-465a-9fcf-96600f8d626f
37
+ Etag:
38
+ - W/"ccea8f9dded875fa76a16e0d98602eb5"
39
+ X-Runtime:
40
+ - '0.029013'
41
+ X-Powered-By:
42
+ - Phusion Passenger 6.0.0
43
+ Server:
44
+ - nginx/1.15.7 + Phusion Passenger 6.0.0
45
+ body:
46
+ encoding: ASCII-8BIT
47
+ string: !binary |-
48
+ eyJkYXRhIjp7ImlkIjoiMTAuNTQzOC82YnJnLTJtMzciLCJ0eXBlIjoiZG9p
49
+ cyIsImF0dHJpYnV0ZXMiOnsiZG9pIjoiMTAuNTQzOC82YnJnLTJtMzciLCJw
50
+ cmVmaXgiOiIxMC41NDM4Iiwic3VmZml4IjoiNmJyZy0ybTM3IiwiaWRlbnRp
51
+ ZmllcnMiOlt7ImlkZW50aWZpZXIiOiJodHRwczovL2hhbmRsZS50ZXN0LmRh
52
+ dGFjaXRlLm9yZy8xMC41NDM4LzZicmctMm0zNyIsImlkZW50aWZpZXJUeXBl
53
+ IjoiRE9JIn0seyJpZGVudGlmaWVyIjoiOTM3LTAtNDUyMy0xMjM1Ny02Iiwi
54
+ aWRlbnRpZmllclR5cGUiOiJJU0JOIn1dLCJjcmVhdG9ycyI6W3sibmFtZSI6
55
+ IlNtaXRoLCBKb2huIiwibmFtZVR5cGUiOiJQZXJzb25hbCIsImdpdmVuTmFt
56
+ ZSI6IkpvaG4iLCJmYW1pbHlOYW1lIjoiU21pdGgifSx7Im5hbWUiOiLjgaTj
57
+ gb7jgonjgarjgYTjgoLjga7jgafjgZnjgYwifV0sInRpdGxlcyI6W3sibGFu
58
+ ZyI6InBsIiwidGl0bGUiOiJXxYJhxZtjaXdvxZtjaSByenV0b3dhxYQgcG9k
59
+ cHJ6ZXN0cnplbmlvd3ljaCJ9LHsibGFuZyI6ImVuIiwidGl0bGUiOiJUcmFu
60
+ c2xhdGlvbiBvZiBQb2xpc2ggdGl0bGVzIiwidGl0bGVUeXBlIjoiVHJhbnNs
61
+ YXRlZFRpdGxlIn1dLCJwdWJsaXNoZXIiOiJTcHJpbmdlciIsImNvbnRhaW5l
62
+ ciI6eyJ0eXBlIjoiU2VyaWVzIiwiaWRlbnRpZmllciI6IjEwLjUyNzIvb2xk
63
+ ZXJ0ZXN0cHViIiwiaWRlbnRpZmllclR5cGUiOiJET0kifSwicHVibGljYXRp
64
+ b25ZZWFyIjoyMDEwLCJzdWJqZWN0cyI6W3sibGFuZyI6ImVuIiwic3ViamVj
65
+ dCI6IjgzMCBHZXJtYW4gJmFtcDsgcmVsYXRlZCBsaXRlcmF0dXJlcyIsInN1
66
+ YmplY3RTY2hlbWUiOiJEREMifSx7ImxhbmciOiJlbiIsInN1YmplY3QiOiJQ
67
+ b2xpc2ggTGl0ZXJhdHVyZSJ9XSwiY29udHJpYnV0b3JzIjpbeyJuYW1lIjoi
68
+ RG9lLCBKb2huIiwibmFtZVR5cGUiOiJQZXJzb25hbCIsImdpdmVuTmFtZSI6
69
+ IkpvaG4iLCJmYW1pbHlOYW1lIjoiRG9lIiwiY29udHJpYnV0b3JUeXBlIjoi
70
+ RGF0YUNvbGxlY3RvciIsIm5hbWVJZGVudGlmaWVycyI6W3sibmFtZUlkZW50
71
+ aWZpZXIiOiJodHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDEtNTM5My0xNDIx
72
+ IiwibmFtZUlkZW50aWZpZXJTY2hlbWUiOiJPUkNJRCJ9XX1dLCJkYXRlcyI6
73
+ W3siZGF0ZSI6IjIwMTAiLCJkYXRlVHlwZSI6Iklzc3VlZCJ9XSwibGFuZ3Vh
74
+ Z2UiOiJkZSIsInR5cGVzIjp7InJpcyI6IkJPT0siLCJiaWJ0ZXgiOiJib29r
75
+ IiwiY2l0ZXByb2MiOiJib29rIiwic2NoZW1hT3JnIjoiQm9vayIsInJlc291
76
+ cmNlVHlwZSI6Ik1vbm9ncmFwaCIsInJlc291cmNlVHlwZUdlbmVyYWwiOiJU
77
+ ZXh0In0sInJlbGF0ZWRJZGVudGlmaWVycyI6W3sicmVsYXRpb25UeXBlIjoi
78
+ SXNQYXJ0T2YiLCJyZWxhdGVkSWRlbnRpZmllciI6IjEwLjUyNzIvb2xkZXJ0
79
+ ZXN0cHViIiwicmVsYXRlZElkZW50aWZpZXJUeXBlIjoiRE9JIn1dLCJzaXpl
80
+ cyI6WyIyNTYgcGFnZXMiXSwiZm9ybWF0cyI6WyJwZGYiXSwidmVyc2lvbiI6
81
+ bnVsbCwicmlnaHRzTGlzdCI6W3sicmlnaHRzIjoiQ3JlYXRpdmUgQ29tbW9u
82
+ cyBBdHRyaWJ1dGlvbi1Ob0Rlcml2cyAyLjAgR2VuZXJpYyIsInJpZ2h0c1Vy
83
+ aSI6Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LW5k
84
+ LzIuMCJ9XSwiZGVzY3JpcHRpb25zIjpbeyJsYW5nIjoibGEiLCJkZXNjcmlw
85
+ dGlvbiI6IkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZXRldHVy
86
+ IHNhZGlwc2NpbmcgZWxpdHIsIHNlZCBkaWFtIG5vbnVteSBlaXJtb2QgdGVt
87
+ cG9yIGludmlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXV5
88
+ YW0gZXJhdCwgc2VkIGRpYW0gdm9sdXB0dWEuIEF0IHZlcm8gZW9zIGV0IGFj
89
+ Y3VzYW0gZXQganVzdG8gZHVvIGRvbG9yZXMgZXQgZWEgcmVidW0uIFN0ZXQg
90
+ Y2xpdGEga2FzZCBndWJlcmdyZW4sIG5vIHNlYVxuICAgICAgdGFraW1hdGEg
91
+ c2FuY3R1cyBlc3QgTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuIExvcmVt
92
+ IGlwc3VtIGRvbG9yIHNpdCBhbWV0LCBjb25zZXRldHVyIHNhZGlwc2Npbmcg
93
+ ZWxpdHIsIHNlZCBkaWFtIG5vbnVteSBlaXJtb2QgdGVtcG9yIGludmlkdW50
94
+ IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXV5YW0gZXJhdCwgc2Vk
95
+ IGRpYW0gdm9sdXB0dWEuIEF0IHZlcm8gZW9zIGV0IGFjY3VzYW0gZXQganVz
96
+ dG8gZHVvIGRvbG9yZXNcbiAgICAgIGV0IGVhIHJlYnVtLiBTdGV0IGNsaXRh
97
+ IGthc2QgZ3ViZXJncmVuLCBubyBzZWEgdGFraW1hdGEgc2FuY3R1cyBlc3Qg
98
+ TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQuIiwiZGVzY3JpcHRpb25UeXBl
99
+ IjoiQWJzdHJhY3QifV0sImdlb0xvY2F0aW9ucyI6W10sImZ1bmRpbmdSZWZl
100
+ cmVuY2VzIjpbXSwieG1sIjoiUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlC
101
+ bGJtTnZaR2x1WnowaVZWUkdMVGdpUHo0S1BISmxjMjkxY21ObElIaHRiRzV6
102
+ T25oemFUMGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TVM5WVRVeFRZ
103
+ MmhsYldFdGFXNXpkR0Z1WTJVaUlIaHRiRzV6UFNKb2RIUndPaTh2WkdGMFlX
104
+ TnBkR1V1YjNKbkwzTmphR1Z0WVM5clpYSnVaV3d0TkNJZ2VITnBPbk5qYUdW
105
+ dFlVeHZZMkYwYVc5dVBTSm9kSFJ3T2k4dlpHRjBZV05wZEdVdWIzSm5MM05q
106
+ YUdWdFlTOXJaWEp1Wld3dE5DQm9kSFJ3T2k4dmMyTm9aVzFoTG1SaGRHRmph
107
+ WFJsTG05eVp5OXRaWFJoTDJ0bGNtNWxiQzAwTGpFdmJXVjBZV1JoZEdFdWVI
108
+ TmtJajRLSUNBOGFXUmxiblJwWm1sbGNpQnBaR1Z1ZEdsbWFXVnlWSGx3WlQw
109
+ aVJFOUpJajR4TUM0MU5ETTRMelpDVWtjdE1rMHpOend2YVdSbGJuUnBabWxs
110
+ Y2o0S0lDQThZM0psWVhSdmNuTStDaUFnSUNBOFkzSmxZWFJ2Y2o0S0lDQWdJ
111
+ Q0FnUEdOeVpXRjBiM0pPWVcxbElHNWhiV1ZVZVhCbFBTSlFaWEp6YjI1aGJD
112
+ SStVMjFwZEdnc0lFcHZhRzQ4TDJOeVpXRjBiM0pPWVcxbFBnb2dJQ0FnSUNB
113
+ OFoybDJaVzVPWVcxbFBrcHZhRzQ4TDJkcGRtVnVUbUZ0WlQ0S0lDQWdJQ0Fn
114
+ UEdaaGJXbHNlVTVoYldVK1UyMXBkR2c4TDJaaGJXbHNlVTVoYldVK0NpQWdJ
115
+ Q0E4TDJOeVpXRjBiM0krQ2lBZ0lDQThZM0psWVhSdmNqNEtJQ0FnSUNBZ1BH
116
+ TnlaV0YwYjNKT1lXMWxQdU9CcE9PQnZ1T0NpZU9CcXVPQmhPT0NndU9CcnVP
117
+ QnArT0JtZU9CakR3dlkzSmxZWFJ2Y2s1aGJXVStDaUFnSUNBZ0lEeHVZVzFs
118
+ U1dSbGJuUnBabWxsY2lCdVlXMWxTV1JsYm5ScFptbGxjbE5qYUdWdFpUMGlT
119
+ Vk5PU1NJZ2MyTm9aVzFsVlZKSlBTSm9kSFJ3T2k4dmFYTnVhUzV2Y21jdmFY
120
+ TnVhUzhpUGpBd01EQXdNREF4TXpRMU9UWTFNakE4TDI1aGJXVkpaR1Z1ZEds
121
+ bWFXVnlQZ29nSUNBZ1BDOWpjbVZoZEc5eVBnb2dJRHd2WTNKbFlYUnZjbk0r
122
+ Q2lBZ1BIUnBkR3hsY3o0S0lDQWdJRHgwYVhSc1pTQjRiV3c2YkdGdVp6MGlj
123
+ R3dpUGxmRmdtSEZtMk5wZDIvRm0yTnBJSEo2ZFhSdmQySEZoQ0J3YjJSd2Nu
124
+ cGxjM1J5ZW1WdWFXOTNlV05vUEM5MGFYUnNaVDRLSUNBZ0lEeDBhWFJzWlNC
125
+ NGJXdzZiR0Z1WnowaVpXNGlJSFJwZEd4bFZIbHdaVDBpVkhKaGJuTnNZWFJs
126
+ WkZScGRHeGxJajVVY21GdWMyeGhkR2x2YmlCdlppQlFiMnhwYzJnZ2RHbDBi
127
+ R1Z6UEM5MGFYUnNaVDRLSUNBOEwzUnBkR3hsY3o0S0lDQThjSFZpYkdsemFH
128
+ VnlQbE53Y21sdVoyVnlQQzl3ZFdKc2FYTm9aWEkrQ2lBZ1BIQjFZbXhwWTJG
129
+ MGFXOXVXV1ZoY2o0eU1ERXdQQzl3ZFdKc2FXTmhkR2x2YmxsbFlYSStDaUFn
130
+ UEhOMVltcGxZM1J6UGdvZ0lDQWdQSE4xWW1wbFkzUWdlRzFzT214aGJtYzlJ
131
+ bVZ1SWlCemRXSnFaV04wVTJOb1pXMWxQU0pFUkVNaVBqZ3pNQ0JIWlhKdFlX
132
+ NGdKbUZ0Y0RzZ2NtVnNZWFJsWkNCc2FYUmxjbUYwZFhKbGN6d3ZjM1ZpYW1W
133
+ amRENEtJQ0FnSUR4emRXSnFaV04wSUhodGJEcHNZVzVuUFNKbGJpSStVRzlz
134
+ YVhOb0lFeHBkR1Z5WVhSMWNtVThMM04xWW1wbFkzUStDaUFnUEM5emRXSnFa
135
+ V04wY3o0S0lDQThZMjl1ZEhKcFluVjBiM0p6UGdvZ0lDQWdQR052Ym5SeWFX
136
+ SjFkRzl5SUdOdmJuUnlhV0oxZEc5eVZIbHdaVDBpUkdGMFlVTnZiR3hsWTNS
137
+ dmNpSStDaUFnSUNBZ0lEeGpiMjUwY21saWRYUnZjazVoYldVZ2JtRnRaVlI1
138
+ Y0dVOUlsQmxjbk52Ym1Gc0lqNUViMlVzSUVwdmFHNDhMMk52Ym5SeWFXSjFk
139
+ Rzl5VG1GdFpUNEtJQ0FnSUNBZ1BHZHBkbVZ1VG1GdFpUNUtiMmh1UEM5bmFY
140
+ WmxiazVoYldVK0NpQWdJQ0FnSUR4bVlXMXBiSGxPWVcxbFBrUnZaVHd2Wm1G
141
+ dGFXeDVUbUZ0WlQ0S0lDQWdJQ0FnUEc1aGJXVkpaR1Z1ZEdsbWFXVnlJRzVo
142
+ YldWSlpHVnVkR2xtYVdWeVUyTm9aVzFsUFNKUFVrTkpSQ0lnYzJOb1pXMWxW
143
+ VkpKUFNKb2RIUndPaTh2YjNKamFXUXViM0puTHlJK01EQXdNQzB3TURBeExU
144
+ VXpPVE10TVRReU1Ud3ZibUZ0WlVsa1pXNTBhV1pwWlhJK0NpQWdJQ0E4TDJO
145
+ dmJuUnlhV0oxZEc5eVBnb2dJRHd2WTI5dWRISnBZblYwYjNKelBnb2dJRHhz
146
+ WVc1bmRXRm5aVDVrWlR3dmJHRnVaM1ZoWjJVK0NpQWdQSEpsYzI5MWNtTmxW
147
+ SGx3WlNCeVpYTnZkWEpqWlZSNWNHVkhaVzVsY21Gc1BTSlVaWGgwSWo1TmIy
148
+ NXZaM0poY0dnOEwzSmxjMjkxY21ObFZIbHdaVDRLSUNBOFlXeDBaWEp1WVhS
149
+ bFNXUmxiblJwWm1sbGNuTStDaUFnSUNBOFlXeDBaWEp1WVhSbFNXUmxiblJw
150
+ Wm1sbGNpQmhiSFJsY201aGRHVkpaR1Z1ZEdsbWFXVnlWSGx3WlQwaVNWTkNU
151
+ aUkrT1RNM0xUQXRORFV5TXkweE1qTTFOeTAyUEM5aGJIUmxjbTVoZEdWSlpH
152
+ VnVkR2xtYVdWeVBnb2dJRHd2WVd4MFpYSnVZWFJsU1dSbGJuUnBabWxsY25N
153
+ K0NpQWdQSEpsYkdGMFpXUkpaR1Z1ZEdsbWFXVnljejRLSUNBZ0lEeHlaV3ho
154
+ ZEdWa1NXUmxiblJwWm1sbGNpQnlaV3hoZEdWa1NXUmxiblJwWm1sbGNsUjVj
155
+ R1U5SWtSUFNTSWdjbVZzWVhScGIyNVVlWEJsUFNKSmMxQmhjblJQWmlJK01U
156
+ QXVOVEkzTWk5dmJHUmxjblJsYzNSd2RXSThMM0psYkdGMFpXUkpaR1Z1ZEds
157
+ bWFXVnlQZ29nSUR3dmNtVnNZWFJsWkVsa1pXNTBhV1pwWlhKelBnb2dJRHh6
158
+ YVhwbGN6NEtJQ0FnSUR4emFYcGxQakkxTmlCd1lXZGxjend2YzJsNlpUNEtJ
159
+ Q0E4TDNOcGVtVnpQZ29nSUR4bWIzSnRZWFJ6UGdvZ0lDQWdQR1p2Y20xaGRE
160
+ NXdaR1k4TDJadmNtMWhkRDRLSUNBOEwyWnZjbTFoZEhNK0NpQWdQSFpsY25O
161
+ cGIyNCtNand2ZG1WeWMybHZiajRLSUNBOGNtbG5hSFJ6VEdsemRENEtJQ0Fn
162
+ SUR4eWFXZG9kSE1nY21sbmFIUnpWVkpKUFNKb2RIUndPaTh2WTNKbFlYUnBk
163
+ bVZqYjIxdGIyNXpMbTl5Wnk5c2FXTmxibk5sY3k5aWVTMXVaQzh5TGpBdklq
164
+ NURjbVZoZEdsMlpTQkRiMjF0YjI1eklFRjBkSEpwWW5WMGFXOXVMVTV2UkdW
165
+ eWFYWnpJREl1TUNCSFpXNWxjbWxqUEM5eWFXZG9kSE0rQ2lBZ1BDOXlhV2Rv
166
+ ZEhOTWFYTjBQZ29nSUR4a1pYTmpjbWx3ZEdsdmJuTStDaUFnSUNBOFpHVnpZ
167
+ M0pwY0hScGIyNGdlRzFzT214aGJtYzlJbXhoSWlCa1pYTmpjbWx3ZEdsdmJs
168
+ UjVjR1U5SWtGaWMzUnlZV04wSWo0S0lDQWdJQ0FnVEc5eVpXMGdhWEJ6ZFcw
169
+ Z1pHOXNiM0lnYzJsMElHRnRaWFFzSUdOdmJuTmxkR1YwZFhJZ2MyRmthWEJ6
170
+ WTJsdVp5QmxiR2wwY2l3Z2MyVmtJR1JwWVcwZ2JtOXVkVzE1SUdWcGNtMXZa
171
+ Q0IwWlcxd2IzSWdhVzUyYVdSMWJuUWdkWFFnYkdGaWIzSmxJR1YwSUdSdmJH
172
+ OXlaU0J0WVdkdVlTQmhiR2x4ZFhsaGJTQmxjbUYwTENCelpXUWdaR2xoYlNC
173
+ MmIyeDFjSFIxWVM0Z1FYUWdkbVZ5YnlCbGIzTWdaWFFnWVdOamRYTmhiU0Js
174
+ ZENCcWRYTjBieUJrZFc4Z1pHOXNiM0psY3lCbGRDQmxZU0J5WldKMWJTNGdV
175
+ M1JsZENCamJHbDBZU0JyWVhOa0lHZDFZbVZ5WjNKbGJpd2dibThnYzJWaENp
176
+ QWdJQ0FnSUhSaGEybHRZWFJoSUhOaGJtTjBkWE1nWlhOMElFeHZjbVZ0SUds
177
+ d2MzVnRJR1J2Ykc5eUlITnBkQ0JoYldWMExpQk1iM0psYlNCcGNITjFiU0Jr
178
+ YjJ4dmNpQnphWFFnWVcxbGRDd2dZMjl1YzJWMFpYUjFjaUJ6WVdScGNITmph
179
+ VzVuSUdWc2FYUnlMQ0J6WldRZ1pHbGhiU0J1YjI1MWJYa2daV2x5Ylc5a0lI
180
+ UmxiWEJ2Y2lCcGJuWnBaSFZ1ZENCMWRDQnNZV0p2Y21VZ1pYUWdaRzlzYjNK
181
+ bElHMWhaMjVoSUdGc2FYRjFlV0Z0SUdWeVlYUXNJSE5sWkNCa2FXRnRJSFp2
182
+ YkhWd2RIVmhMaUJCZENCMlpYSnZJR1Z2Y3lCbGRDQmhZMk4xYzJGdElHVjBJ
183
+ R3AxYzNSdklHUjFieUJrYjJ4dmNtVnpDaUFnSUNBZ0lHVjBJR1ZoSUhKbFlu
184
+ VnRMaUJUZEdWMElHTnNhWFJoSUd0aGMyUWdaM1ZpWlhKbmNtVnVMQ0J1YnlC
185
+ elpXRWdkR0ZyYVcxaGRHRWdjMkZ1WTNSMWN5QmxjM1FnVEc5eVpXMGdhWEJ6
186
+ ZFcwZ1pHOXNiM0lnYzJsMElHRnRaWFF1Q2lBZ0lDQThMMlJsYzJOeWFYQjBh
187
+ Vzl1UGdvZ0lEd3ZaR1Z6WTNKcGNIUnBiMjV6UGdvOEwzSmxjMjkxY21ObFBn
188
+ bz0iLCJ1cmwiOiJodHRwOi8vd3d3LmRhdGFjaXRlLm9yZyIsImNvbnRlbnRV
189
+ cmwiOm51bGwsIm1ldGFkYXRhVmVyc2lvbiI6MTQsInNjaGVtYVZlcnNpb24i
190
+ OiJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIsInNvdXJj
191
+ ZSI6Im1kcyIsImlzQWN0aXZlIjp0cnVlLCJzdGF0ZSI6ImZpbmRhYmxlIiwi
192
+ cmVhc29uIjpudWxsLCJsYW5kaW5nUGFnZSI6eyJ1cmwiOiJodHRwczovL3d3
193
+ dy5kYXRhY2l0ZS5vcmcvIiwiZXJyb3IiOiIiLCJzdGF0dXMiOjIwMCwiY2hl
194
+ Y2tlZCI6IjIwMTgtMTItMTEgMjE6MDQ6MTUiLCJib2R5SGFzUGlkIjpmYWxz
195
+ ZSwiY2l0YXRpb25Eb2kiOm51bGwsImNvbnRlbnRUeXBlIjoidGV4dC9odG1s
196
+ Iiwic2NoZW1hT3JnSWQiOm51bGwsImRjSWRlbnRpZmllciI6bnVsbCwiaGFz
197
+ U2NoZW1hT3JnIjpmYWxzZSwicmVkaXJlY3RVcmxzIjpbImh0dHA6Ly93d3cu
198
+ ZGF0YWNpdGUub3JnIl0sInJlZGlyZWN0Q291bnQiOjEsImRvd25sb2FkTGF0
199
+ ZW5jeSI6NDh9LCJjcmVhdGVkIjoiMjAxOC0wOC0zMFQyMzowMjoxNi4wMDBa
200
+ IiwicmVnaXN0ZXJlZCI6IjIwMTgtMDgtMzBUMjM6MDM6MjIuMDAwWiIsInVw
201
+ ZGF0ZWQiOiIyMDE5LTAxLTA1VDA2OjA5OjMxLjAwMFoifSwicmVsYXRpb25z
202
+ aGlwcyI6eyJjbGllbnQiOnsiZGF0YSI6eyJpZCI6ImRhdGFjaXRlLnRyYW5z
203
+ ZmVyIiwidHlwZSI6ImNsaWVudHMifX0sIm1lZGlhIjp7ImRhdGEiOlt7Imlk
204
+ IjoiMDAwMC0wMDAwLTAwMDAtbjAyNSIsInR5cGUiOiJtZWRpYSJ9XX19fSwi
205
+ aW5jbHVkZWQiOlt7ImlkIjoiZGF0YWNpdGUudHJhbnNmZXIiLCJ0eXBlIjoi
206
+ Y2xpZW50cyIsImF0dHJpYnV0ZXMiOnsibmFtZSI6IlRyYW5zZmVyIFRlc3Qi
207
+ LCJzeW1ib2wiOiJEQVRBQ0lURS5UUkFOU0ZFUiIsInllYXIiOjIwMTcsImNv
208
+ bnRhY3ROYW1lIjoiRGF0YUNpdGUgU3VwcG9ydCIsImNvbnRhY3RFbWFpbCI6
209
+ InN1cHBvcnRAZGF0YWNpdGUub3JnIiwiZGVzY3JpcHRpb24iOm51bGwsImRv
210
+ bWFpbnMiOiIqIiwidXJsIjpudWxsLCJjcmVhdGVkIjoiMjAxNy0xMS0yMlQx
211
+ MDo0ODoyMC4wMDBaIiwidXBkYXRlZCI6IjIwMTgtMDgtMjZUMDE6MzE6MDgu
212
+ MDAwWiIsImlzQWN0aXZlIjp0cnVlLCJoYXNQYXNzd29yZCI6ZmFsc2V9LCJy
213
+ ZWxhdGlvbnNoaXBzIjp7InByb3ZpZGVyIjp7ImRhdGEiOnsiaWQiOiJkYXRh
214
+ Y2l0ZSIsInR5cGUiOiJwcm92aWRlcnMifX0sInByZWZpeGVzIjp7ImRhdGEi
215
+ Olt7ImlkIjoiMTAuNTA3MiIsInR5cGUiOiJwcmVmaXhlcyJ9XX19fSx7Imlk
216
+ IjoiMDAwMC0wMDAwLTAwMDAtbjAyNSIsInR5cGUiOiJtZWRpYSIsImF0dHJp
217
+ YnV0ZXMiOnsidmVyc2lvbiI6MCwidXJsIjoiaHR0cDovL3d3dy5kYXRhY2l0
218
+ ZS5vcmcvY2lybmVjby10ZXN0LnBkZiIsIm1lZGlhVHlwZSI6ImFwcGxpY2F0
219
+ aW9uL3BkZiIsImNyZWF0ZWQiOiIyMDE4LTA4LTMwVDIzOjE4OjA5LjAwMFoi
220
+ LCJ1cGRhdGVkIjoiMjAxOC0wOC0zMFQyMzoxODowOS4wMDBaIn0sInJlbGF0
221
+ aW9uc2hpcHMiOnsiZG9pIjp7ImRhdGEiOnsiaWQiOiIxMC41NDM4LzZCUkct
222
+ Mk0zNyIsInR5cGUiOiJkb2lzIn19fX1dfQ==
223
+ http_version:
224
+ recorded_at: Mon, 07 Jan 2019 14:53:06 GMT
225
+ recorded_with: VCR 3.0.3
data/spec/utils_spec.rb CHANGED
@@ -32,7 +32,7 @@ describe Cirneco::DataCenter, vcr: true, :order => :defined do
32
32
 
33
33
  it 'should decode doi not encoded' do
34
34
  doi = "10.23725/mds-client-ruby-test"
35
- expect(subject.decode_doi(doi)).to eq(0)
35
+ expect(subject.decode_doi(doi)).to be_nil
36
36
  end
37
37
 
38
38
  it 'should encode doi' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cirneco
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.26
4
+ version: 0.9.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-20 00:00:00.000000000 Z
11
+ date: 2019-01-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: maremma
@@ -274,22 +274,22 @@ dependencies:
274
274
  name: codeclimate-test-reporter
275
275
  requirement: !ruby/object:Gem::Requirement
276
276
  requirements:
277
- - - "~>"
278
- - !ruby/object:Gem::Version
279
- version: '1.0'
280
277
  - - ">="
281
278
  - !ruby/object:Gem::Version
282
279
  version: 1.0.0
280
+ - - "~>"
281
+ - !ruby/object:Gem::Version
282
+ version: '1.0'
283
283
  type: :development
284
284
  prerelease: false
285
285
  version_requirements: !ruby/object:Gem::Requirement
286
286
  requirements:
287
- - - "~>"
288
- - !ruby/object:Gem::Version
289
- version: '1.0'
290
287
  - - ">="
291
288
  - !ruby/object:Gem::Version
292
289
  version: 1.0.0
290
+ - - "~>"
291
+ - !ruby/object:Gem::Version
292
+ version: '1.0'
293
293
  - !ruby/object:Gem::Dependency
294
294
  name: simplecov
295
295
  requirement: !ruby/object:Gem::Requirement
@@ -371,6 +371,7 @@ files:
371
371
  - spec/fixtures/vcr_cassettes/Cirneco_Work/DOI_API/get/should_get_doi_not_found.yml
372
372
  - spec/fixtures/vcr_cassettes/Cirneco_Work/DOI_API/put/should_put_doi.yml
373
373
  - spec/fixtures/vcr_cassettes/Cirneco_Work/Media_API/get/should_get_media.yml
374
+ - spec/fixtures/vcr_cassettes/Cirneco_Work/Media_API/get_rest_doi/should_get_doi.yml
374
375
  - spec/fixtures/vcr_cassettes/Cirneco_Work/Media_API/post/should_post_media.yml
375
376
  - spec/fixtures/vcr_cassettes/Cirneco_Work/Metadata_API/delete/should_delete_metadata.yml
376
377
  - spec/fixtures/vcr_cassettes/Cirneco_Work/Metadata_API/get/should_get_metadata.yml
@@ -399,8 +400,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
399
400
  - !ruby/object:Gem::Version
400
401
  version: '0'
401
402
  requirements: []
402
- rubyforge_project:
403
- rubygems_version: 2.7.7
403
+ rubygems_version: 3.0.2
404
404
  signing_key:
405
405
  specification_version: 4
406
406
  summary: Ruby client library for the DataCite MDS