relaton-doi 1.18.0 → 1.18.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: addc79816fa3434eabc8467f9110a145f9e3b01540d0156aa2f3ff30ba257765
4
- data.tar.gz: 2ca981cedcb28ae5c6d7e99291b1657d659f6e63c5d73c03784c44632e20f7df
3
+ metadata.gz: f6165c455d9e93d58c276f6822b9f37d3c47b19a43daae5cbe9f4b13dafeb70e
4
+ data.tar.gz: fbe2077d29570724250addffd80a07d53073303eb55066e007caa2943e0932c7
5
5
  SHA512:
6
- metadata.gz: d21faa242b40898145e610e4f26687291c47fd4064d49d400cb838a63473ab718e1d451021923bf15d4c3a40e6e828bd586a3244d316e611c6aaf35939f9d659
7
- data.tar.gz: 8522954e572b0bf6246cf1934c3a6498d72ccc9770dea6eb2280094bd06f693b1443b666b9548e477659d18dc8ae370512a5e8ecf5d6db0bbe05a6da4feb557c
6
+ metadata.gz: 12d38b33fa066cf92cbecf2a0f4398aa264d941a0e6f09b8099c390e4eb31108ddec4862a395f60a031a3994090f7676ed54705a90d6e7f78ec4b2202f1f632c
7
+ data.tar.gz: d2174bd65dfc7e96e1e1a4c0ec08387a32dd82d3432d8ebb9d792b2d964d21b46468c325f7402345ec702fdd66d1fd430c3309f064781b692f84caa531bc88fc
data/README.adoc CHANGED
@@ -14,6 +14,8 @@ https://github.com/metanorma/metanorma-model-iso#iso-bibliographic-item[IsoBibli
14
14
  You can use it to retrieve metadata of Standards from https://crossref.org, and
15
15
  access such metadata through the `BibliographicItem` object.
16
16
 
17
+ To collect metadata this gem makes a few requests to the CrossRef API. It may take a few seconds to get the metadata.
18
+
17
19
  == Installation
18
20
 
19
21
  Add this line to your application's Gemfile:
@@ -2,6 +2,10 @@ module RelatonDoi
2
2
  module Crossref
3
3
  extend self
4
4
 
5
+ HEADER = {
6
+ "User-Agent" => "Relaton/RelatonDoi (https://www.relaton.org/guides/doi/; mailto:open.source@ribose.com)"
7
+ }.freeze
8
+
5
9
  #
6
10
  # Get a document by DOI from the CrossRef API.
7
11
  #
@@ -15,11 +19,13 @@ module RelatonDoi
15
19
  Util.warn "(#{doi}) Fetching from search.crossref.org ..."
16
20
  id = doi.sub(%r{^doi:}, "")
17
21
  message = get_by_id id
18
- Util.warn "(#{doi}) Found: `#{message['DOI']}`"
19
- Parser.parse message
20
- rescue Serrano::NotFound
21
- Util.warn "(#{doi}) Not found."
22
- nil
22
+ if message
23
+ Util.warn "(#{doi}) Found: `#{message['DOI']}`"
24
+ Parser.parse message
25
+ else
26
+ Util.warn("(#{doi}) Not found.")
27
+ nil
28
+ end
23
29
  end
24
30
 
25
31
  #
@@ -30,8 +36,24 @@ module RelatonDoi
30
36
  # @return [Hash] The document.
31
37
  #
32
38
  def get_by_id(id)
33
- resp = Serrano.works ids: id
34
- resp[0]["message"]
39
+ # resp = Serrano.works ids: id
40
+ n = 0
41
+ url = "https://api.crossref.org/works/#{ERB::Util.url_encode(id)}"
42
+ loop do
43
+ resp = Faraday.get url, nil, HEADER
44
+ case resp.status
45
+ when 200
46
+ work = JSON.parse resp.body
47
+ return work["message"] if work["status"] == "ok"
48
+ when 404 then return nil
49
+ end
50
+
51
+ if n > 1
52
+ raise RelatonBib::RequestError, "Crossref error: #{resp.body}"
53
+ end
54
+ n += 1
55
+ sleep resp.headers["x-rate-limit-interval"].to_i * n
56
+ end
35
57
  end
36
58
  end
37
59
  end
@@ -47,5 +47,11 @@ module RelatonDoi
47
47
  def grammar_hash
48
48
  @grammar_hash ||= ::RelatonDoi.grammar_hash
49
49
  end
50
+
51
+ # Returns number of threads
52
+ # @return [Integer]
53
+ def threads
54
+ 2
55
+ end
50
56
  end
51
57
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RelatonDoi
4
- VERSION = "1.18.0"
4
+ VERSION = "1.18.1"
5
5
  end
data/lib/relaton_doi.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "serrano"
3
+ # require "serrano"
4
4
  require "relaton_bipm"
5
5
  # require "relaton_iso_bib"
6
6
  # require "relaton_w3c"
@@ -13,9 +13,9 @@ require_relative "relaton_doi/util"
13
13
  require_relative "relaton_doi/parser"
14
14
  require_relative "relaton_doi/crossref"
15
15
 
16
- Serrano.configuration do |config|
17
- config.mailto = "open.source@ribose.com"
18
- end
16
+ # Serrano.configuration do |config|
17
+ # config.mailto = "open.source@ribose.com"
18
+ # end
19
19
 
20
20
  module RelatonDoi
21
21
  extend self
data/relaton-doi.gemspec CHANGED
@@ -40,7 +40,7 @@ Gem::Specification.new do |spec|
40
40
  spec.add_dependency "relaton-ietf", "~> 1.18.0"
41
41
  spec.add_dependency "relaton-nist", "~> 1.18.0"
42
42
  # spec.add_dependency "relaton-w3c", "~> 1.10.0"
43
- spec.add_dependency "serrano", "~> 1.4.0"
43
+ # spec.add_dependency "serrano", "~> 1.4.0"
44
44
 
45
45
  # For more information and examples about making a new gem, checkout our
46
46
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-doi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.18.0
4
+ version: 1.18.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-08 00:00:00.000000000 Z
11
+ date: 2024-06-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: relaton-bib
@@ -80,20 +80,6 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.18.0
83
- - !ruby/object:Gem::Dependency
84
- name: serrano
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 1.4.0
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 1.4.0
97
83
  description: 'RelatonDOI: retrieve Standards for bibliographic using DOI through Crossrefand
98
84
  provide Relaton object.'
99
85
  email:
@@ -142,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
128
  - !ruby/object:Gem::Version
143
129
  version: '0'
144
130
  requirements: []
145
- rubygems_version: 3.3.26
131
+ rubygems_version: 3.3.27
146
132
  signing_key:
147
133
  specification_version: 4
148
134
  summary: 'RelatonDOI: retrieve Standards for bibliographic using DOI through Crossrefand