relaton-doi 2.0.0.pre.alpha.1 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0f7e17ade3de5350425a977bc98d1138372e8bc488b1d2167f01faf9005ef25a
4
- data.tar.gz: 6073344cefc01c1d6c4927e6e8d1244479e78412fe2a6161aadf5eedb150f7a6
3
+ metadata.gz: b256f738a69cec57a4e6debe0f9cf68c868aaf0cc7cd5cfe95c134e8503dd1ba
4
+ data.tar.gz: 2f6f8ef49e0fce868e1e359594a98b1d52b892ab505dd9c241aeb032623f5925
5
5
  SHA512:
6
- metadata.gz: 828e003d8e8aee68503d099d3935cebc5c8d5efcd7fb6662734dec73e95f6b4c21011dbee3822130169c914bcdefa6a4be167d8b9d00b15fe75c21ead14530c7
7
- data.tar.gz: 5c36820805071f3b77af5158ed542aaab498ba03724df8f912e6cc75ec4f8a7d9406124cc2fd26dacf03dfb5fc0d9c2f9f1fb27c7e685863a49965d64fb92496
6
+ metadata.gz: d481613fa9518026a02b18dd8ffce3d21dbf70930a227c4b9bc208ba36c2ea2859cb80a417e30f10c0f50a30fc3e7ec4acd49c1db60c9a0605d561ee3081452f
7
+ data.tar.gz: dd3c1567ffed897a5c9051a6a00f7f974ac405dcebc32beefdc3a48a5d057226c8d7dd536c0b7c858269a5c6dd66e1cc19447cd0a7391ea9fa2233deade2d05a
@@ -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:
@@ -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
@@ -304,7 +304,7 @@ module Relaton
304
304
  return [] unless @src["abstract"]
305
305
 
306
306
  content = @src["abstract"]
307
- abstract = Bib::LocalizedMarkedUpString.new(
307
+ abstract = Bib::Abstract.new(
308
308
  content: content, language: "en", script: "Latn",
309
309
  )
310
310
  [abstract]
@@ -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.1"
5
+ VERSION = "2.0.0"
6
6
  end
7
7
  end
data/relaton-doi.gemspec CHANGED
@@ -34,13 +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-bib", "~> 2.0.0-alpha.4"
38
- spec.add_dependency "relaton-bipm", "~> 2.0.0-alpha.1"
39
- spec.add_dependency "relaton-ieee", "~> 2.0.0-alpha.1"
40
- spec.add_dependency "relaton-ietf", "~> 2.0.0-alpha.2"
41
- spec.add_dependency "relaton-nist", "~> 2.0.0-alpha.2"
37
+ spec.add_dependency "relaton-bipm", "~> 2.0.0"
38
+ spec.add_dependency "relaton-ieee", "~> 2.0.0"
39
+ spec.add_dependency "relaton-ietf", "~> 2.0.0"
40
+ spec.add_dependency "relaton-nist", "~> 2.0.0"
42
41
  # spec.add_dependency "relaton-w3c", "~> 1.10.0"
43
- spec.add_dependency "faraday", "~> 2.7"
42
+ spec.add_dependency "mechanize", "~> 2.0"
44
43
 
45
44
  # For more information and examples about making a new gem, checkout our
46
45
  # guide at: https://bundler.io/guides/creating_gem.html
metadata CHANGED
@@ -1,7 +1,7 @@
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.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
@@ -9,90 +9,76 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
- - !ruby/object:Gem::Dependency
13
- name: relaton-bib
14
- requirement: !ruby/object:Gem::Requirement
15
- requirements:
16
- - - "~>"
17
- - !ruby/object:Gem::Version
18
- version: 2.0.0.pre.alpha.4
19
- type: :runtime
20
- prerelease: false
21
- version_requirements: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - "~>"
24
- - !ruby/object:Gem::Version
25
- version: 2.0.0.pre.alpha.4
26
12
  - !ruby/object:Gem::Dependency
27
13
  name: relaton-bipm
28
14
  requirement: !ruby/object:Gem::Requirement
29
15
  requirements:
30
16
  - - "~>"
31
17
  - !ruby/object:Gem::Version
32
- version: 2.0.0.pre.alpha.1
18
+ version: 2.0.0
33
19
  type: :runtime
34
20
  prerelease: false
35
21
  version_requirements: !ruby/object:Gem::Requirement
36
22
  requirements:
37
23
  - - "~>"
38
24
  - !ruby/object:Gem::Version
39
- version: 2.0.0.pre.alpha.1
25
+ version: 2.0.0
40
26
  - !ruby/object:Gem::Dependency
41
27
  name: relaton-ieee
42
28
  requirement: !ruby/object:Gem::Requirement
43
29
  requirements:
44
30
  - - "~>"
45
31
  - !ruby/object:Gem::Version
46
- version: 2.0.0.pre.alpha.1
32
+ version: 2.0.0
47
33
  type: :runtime
48
34
  prerelease: false
49
35
  version_requirements: !ruby/object:Gem::Requirement
50
36
  requirements:
51
37
  - - "~>"
52
38
  - !ruby/object:Gem::Version
53
- version: 2.0.0.pre.alpha.1
39
+ version: 2.0.0
54
40
  - !ruby/object:Gem::Dependency
55
41
  name: relaton-ietf
56
42
  requirement: !ruby/object:Gem::Requirement
57
43
  requirements:
58
44
  - - "~>"
59
45
  - !ruby/object:Gem::Version
60
- version: 2.0.0.pre.alpha.2
46
+ version: 2.0.0
61
47
  type: :runtime
62
48
  prerelease: false
63
49
  version_requirements: !ruby/object:Gem::Requirement
64
50
  requirements:
65
51
  - - "~>"
66
52
  - !ruby/object:Gem::Version
67
- version: 2.0.0.pre.alpha.2
53
+ version: 2.0.0
68
54
  - !ruby/object:Gem::Dependency
69
55
  name: relaton-nist
70
56
  requirement: !ruby/object:Gem::Requirement
71
57
  requirements:
72
58
  - - "~>"
73
59
  - !ruby/object:Gem::Version
74
- version: 2.0.0.pre.alpha.2
60
+ version: 2.0.0
75
61
  type: :runtime
76
62
  prerelease: false
77
63
  version_requirements: !ruby/object:Gem::Requirement
78
64
  requirements:
79
65
  - - "~>"
80
66
  - !ruby/object:Gem::Version
81
- version: 2.0.0.pre.alpha.2
67
+ version: 2.0.0
82
68
  - !ruby/object:Gem::Dependency
83
- name: faraday
69
+ name: mechanize
84
70
  requirement: !ruby/object:Gem::Requirement
85
71
  requirements:
86
72
  - - "~>"
87
73
  - !ruby/object:Gem::Version
88
- version: '2.7'
74
+ version: '2.0'
89
75
  type: :runtime
90
76
  prerelease: false
91
77
  version_requirements: !ruby/object:Gem::Requirement
92
78
  requirements:
93
79
  - - "~>"
94
80
  - !ruby/object:Gem::Version
95
- version: '2.7'
81
+ version: '2.0'
96
82
  description: 'RelatonDOI: retrieve Standards for bibliographic using DOI through Crossrefand
97
83
  provide Relaton object.'
98
84
  email: