relaton-doi 2.0.0.pre.alpha.2 → 2.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2a8ae63378c315ebe08dc911802f67dc9e2113d5c9da15a9a598c245d76376c4
4
- data.tar.gz: 56ce213956c38caeb98139543f65abe996dac5556f155b62cb2f9403175786e7
3
+ metadata.gz: c4b0745e1383cc4ccc0fcde653e2741d02d7293ad0dd3b18c43104ccf584be38
4
+ data.tar.gz: '09d1d3d779b065e06cf00ba7eac2fdbf7b0bfba4fec91410866696d40609d7ec'
5
5
  SHA512:
6
- metadata.gz: e7e6b33ffe54f9dc3e4800944cb56a60acef5f32af72ad2f4300ee05f6d027dfdbd4324612a8e826d525a2d00bf80bd1ce89b9b36e28337d6576a291e7dc055f
7
- data.tar.gz: b27b56901521fa3c44f5db65ca85f5f6b2fcd8569a4a0156c5a5c7bc735c54dee1e8c53b3916fabbdb85c69527a8442dea07535fbd73e38c3b150bf1ef0bdc06
6
+ metadata.gz: c6e35be0c954b590885813cb26c5646ea9c7dc41b7aac0b3a32d6a37b085a48a325c09800b2649bda21390b2097b218cc52198dfa77f7b7b7799356514c8b201
7
+ data.tar.gz: 22638765c10df17e62007511a8713287bf0c5a1cad773027b214d3e4ad9e7da5b5f88e9a3c70d91a655502081d5bc216f1c8dfa720bebd1da383246787130e05
@@ -7,6 +7,7 @@ on:
7
7
  branches: [ master, main ]
8
8
  tags: [ v* ]
9
9
  pull_request:
10
+ workflow_dispatch:
10
11
 
11
12
  jobs:
12
13
  rake:
data/Gemfile CHANGED
@@ -5,6 +5,7 @@ source "https://rubygems.org"
5
5
  # Specify your gem's dependencies in relaton-doi.gemspec
6
6
  gemspec
7
7
 
8
+
8
9
  gem "debug"
9
10
  gem "equivalent-xml", "~> 0.6"
10
11
  gem "rake", "~> 13.0"
@@ -1,13 +1,11 @@
1
- require "faraday"
1
+ require "mechanize"
2
2
 
3
3
  module Relaton
4
4
  module Doi
5
5
  module Crossref
6
6
  extend self
7
7
 
8
- HEADER = {
9
- "User-Agent" => "Relaton::Doi (https://www.relaton.org/guides/doi/; mailto:open.source@ribose.com)"
10
- }.freeze
8
+ USER_AGENT = "Relaton::Doi (https://www.relaton.org/guides/doi/; mailto:open.source@ribose.com)"
11
9
 
12
10
  #
13
11
  # Get a document by DOI from the CrossRef API.
@@ -39,24 +37,34 @@ module Relaton
39
37
  # @return [Hash] The document.
40
38
  #
41
39
  def get_by_id(id) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
42
- # resp = Serrano.works ids: id
43
40
  n = 0
44
41
  url = "https://api.crossref.org/works/#{CGI.escape(id)}"
45
42
  loop do
46
- resp = Faraday.get url, nil, HEADER
47
- case resp.status
48
- when 200
49
- work = JSON.parse resp.body
50
- return work["message"] if work["status"] == "ok"
51
- when 404 then return nil
52
- end
43
+ resp = agent.get url
44
+ work = JSON.parse resp.body
45
+ return work["message"] if work["status"] == "ok"
53
46
 
54
47
  if n > 1
55
48
  raise Relaton::RequestError, "Crossref error: #{resp.body}"
56
49
  end
57
50
 
58
51
  n += 1
59
- sleep resp.headers["x-rate-limit-interval"].to_i * n
52
+ sleep resp.response["x-rate-limit-interval"].to_i * n
53
+ rescue Mechanize::ResponseCodeError => e
54
+ return nil if e.response_code == "404"
55
+
56
+ if n > 1
57
+ raise Relaton::RequestError, "Crossref error: #{e.page.body}"
58
+ end
59
+
60
+ n += 1
61
+ sleep e.page.response["x-rate-limit-interval"].to_i * n
62
+ end
63
+ end
64
+
65
+ def agent
66
+ @agent ||= Mechanize.new do |a|
67
+ a.user_agent = USER_AGENT
60
68
  end
61
69
  end
62
70
  end
@@ -805,16 +805,13 @@ module Relaton
805
805
  url = format(CROSSREF_API_URL, query: query, filter: filter)
806
806
  retries = 0
807
807
  begin
808
- resp = Faraday.get url
809
- case resp.status
810
- when 200..299
811
- JSON.parse(resp.body).dig("message", "items")
812
- when 400..499
813
- nil
814
- else
815
- raise Relaton::RequestError, "Crossref request failed: #{resp.status} #{resp.body}"
816
- end
817
- rescue Faraday::Error => e
808
+ resp = Crossref.agent.get url
809
+ JSON.parse(resp.body).dig("message", "items")
810
+ rescue Mechanize::ResponseCodeError => e
811
+ return nil if e.response_code.start_with?("4")
812
+
813
+ raise Relaton::RequestError, "Crossref request failed: #{e.response_code} #{e.page.body}"
814
+ rescue Net::HTTP::Persistent::Error, Net::HTTPError, Errno::ECONNREFUSED => e
818
815
  retries += 1
819
816
  retry if retries <= MAX_RETRIES
820
817
  raise Relaton::RequestError, "Crossref network error after #{MAX_RETRIES} retries: #{e.message}"
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Relaton
4
4
  module Doi
5
- VERSION = "2.0.0-alpha.2"
5
+ VERSION = "2.1.0"
6
6
  end
7
7
  end
data/relaton-doi.gemspec CHANGED
@@ -34,12 +34,12 @@ Gem::Specification.new do |spec|
34
34
  # Uncomment to register a new dependency of your gem
35
35
  # spec.add_dependency "example-gem", "~> 1.0"
36
36
 
37
- spec.add_dependency "relaton-bipm", "~> 2.0.0-alpha.3"
38
- spec.add_dependency "relaton-ieee", "~> 2.0.0-alpha.2"
39
- spec.add_dependency "relaton-ietf", "~> 2.0.0-alpha.3"
40
- spec.add_dependency "relaton-nist", "~> 2.0.0-alpha.3"
37
+ spec.add_dependency "relaton-bipm", "~> 2.1.0"
38
+ spec.add_dependency "relaton-ieee", "~> 2.1.0"
39
+ spec.add_dependency "relaton-ietf", "~> 2.1.0"
40
+ spec.add_dependency "relaton-nist", "~> 2.1.0"
41
41
  # spec.add_dependency "relaton-w3c", "~> 1.10.0"
42
- spec.add_dependency "faraday", "~> 2.7"
42
+ spec.add_dependency "mechanize", "~> 2.0"
43
43
 
44
44
  # For more information and examples about making a new gem, checkout our
45
45
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-doi
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre.alpha.2
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-05-04 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: relaton-bipm
@@ -15,70 +16,70 @@ dependencies:
15
16
  requirements:
16
17
  - - "~>"
17
18
  - !ruby/object:Gem::Version
18
- version: 2.0.0.pre.alpha.3
19
+ version: 2.1.0
19
20
  type: :runtime
20
21
  prerelease: false
21
22
  version_requirements: !ruby/object:Gem::Requirement
22
23
  requirements:
23
24
  - - "~>"
24
25
  - !ruby/object:Gem::Version
25
- version: 2.0.0.pre.alpha.3
26
+ version: 2.1.0
26
27
  - !ruby/object:Gem::Dependency
27
28
  name: relaton-ieee
28
29
  requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
31
  - - "~>"
31
32
  - !ruby/object:Gem::Version
32
- version: 2.0.0.pre.alpha.2
33
+ version: 2.1.0
33
34
  type: :runtime
34
35
  prerelease: false
35
36
  version_requirements: !ruby/object:Gem::Requirement
36
37
  requirements:
37
38
  - - "~>"
38
39
  - !ruby/object:Gem::Version
39
- version: 2.0.0.pre.alpha.2
40
+ version: 2.1.0
40
41
  - !ruby/object:Gem::Dependency
41
42
  name: relaton-ietf
42
43
  requirement: !ruby/object:Gem::Requirement
43
44
  requirements:
44
45
  - - "~>"
45
46
  - !ruby/object:Gem::Version
46
- version: 2.0.0.pre.alpha.3
47
+ version: 2.1.0
47
48
  type: :runtime
48
49
  prerelease: false
49
50
  version_requirements: !ruby/object:Gem::Requirement
50
51
  requirements:
51
52
  - - "~>"
52
53
  - !ruby/object:Gem::Version
53
- version: 2.0.0.pre.alpha.3
54
+ version: 2.1.0
54
55
  - !ruby/object:Gem::Dependency
55
56
  name: relaton-nist
56
57
  requirement: !ruby/object:Gem::Requirement
57
58
  requirements:
58
59
  - - "~>"
59
60
  - !ruby/object:Gem::Version
60
- version: 2.0.0.pre.alpha.3
61
+ version: 2.1.0
61
62
  type: :runtime
62
63
  prerelease: false
63
64
  version_requirements: !ruby/object:Gem::Requirement
64
65
  requirements:
65
66
  - - "~>"
66
67
  - !ruby/object:Gem::Version
67
- version: 2.0.0.pre.alpha.3
68
+ version: 2.1.0
68
69
  - !ruby/object:Gem::Dependency
69
- name: faraday
70
+ name: mechanize
70
71
  requirement: !ruby/object:Gem::Requirement
71
72
  requirements:
72
73
  - - "~>"
73
74
  - !ruby/object:Gem::Version
74
- version: '2.7'
75
+ version: '2.0'
75
76
  type: :runtime
76
77
  prerelease: false
77
78
  version_requirements: !ruby/object:Gem::Requirement
78
79
  requirements:
79
80
  - - "~>"
80
81
  - !ruby/object:Gem::Version
81
- version: '2.7'
82
+ version: '2.0'
82
83
  description: 'RelatonDOI: retrieve Standards for bibliographic using DOI through Crossrefand
83
84
  provide Relaton object.'
84
85
  email:
@@ -112,6 +113,7 @@ licenses:
112
113
  - BSD-2-Clause
113
114
  metadata:
114
115
  homepage_uri: https://github.com/relaton/relaton-doi
116
+ post_install_message:
115
117
  rdoc_options: []
116
118
  require_paths:
117
119
  - lib
@@ -126,7 +128,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
128
  - !ruby/object:Gem::Version
127
129
  version: '0'
128
130
  requirements: []
129
- rubygems_version: 3.6.9
131
+ rubygems_version: 3.5.22
132
+ signing_key:
130
133
  specification_version: 4
131
134
  summary: 'RelatonDOI: retrieve Standards for bibliographic using DOI through Crossrefand
132
135
  provide Relaton object.'