relaton-bipm 1.10.1 → 1.10.2

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: 3bc3bc46660a7a7852fd963502f27eb135b9f65bb75a5d24d69e59243fc90ad2
4
- data.tar.gz: 4311d9bf2198fe3204f1075a9d088ab9bc24c327c9e2d07dcf5abbe0b00b4059
3
+ metadata.gz: 4b2dba1f1f291abb29c9a90122c060265b1165ef5c8a667fe7aa3cc1bc28c367
4
+ data.tar.gz: 3782195ed79911afc17f0f235bb1bfb82484c06ca7fef87c869aa8d68017d6e6
5
5
  SHA512:
6
- metadata.gz: b6d914ecd5376914dda72e7f9aebb392c2685f0b29871531e434cf6402291383b72815497c74f263f6ba4e37fa88f46ddcb3d78bfc4ba7e1371c246ca6f333b7
7
- data.tar.gz: 2c13012defdb97df5e6884b6f36807bdee455ad39d8feec34441115f2f4796a0a1e46e81101f8ca30c7c3fb7e1b58c15189523b28a1644cf26efedf038cb7731
6
+ metadata.gz: 8c5484395aeca285a53cf84ba9f50ca55db768cb7fbbe162fc8219424aa201af53423b34f5c9ecb8e6a25b776905447f5e987bc4a03e93b62dc808142d2b1501
7
+ data.tar.gz: f2a4039b7e63b4ab8b8e721042b109b9cd6abb3200254e004970a52c74b6593ae0954a39105eaaaff3ea21f47839c99c492d4fc8977f58e1257122e42d369582
data/README.adoc CHANGED
@@ -53,17 +53,17 @@ bib = RelatonBipm::BipmBibliography.get "BIPM Metrologia 29 6 373"
53
53
  ...
54
54
 
55
55
  # get CGPM resolutions
56
- RelatonBipm::BipmBibliography.get "BIPM CGPM01 1"
57
- [relaton-bipm] ("BIPM CGPM01 1") fetching...
58
- [relaton-bipm] ("BIPM CGPM01 1") found CGPM01-1
59
- => #<RelatonBipm::BipmBibliographicItem:0x00007f9e92817968
56
+ RelatonBipm::BipmBibliography.get "BIPM CR 01"
57
+ [relaton-bipm] ("BIPM CR 01") fetching...
58
+ [relaton-bipm] ("BIPM CR 01") found BIPM CR 01
59
+ => #<RelatonBipm::BipmBibliographicItem:0x00007fd4f7cba038
60
60
  ...
61
61
 
62
62
  # get CIPM resolutions
63
- RelatonBipm::BipmBibliography.get "BIPM CIPM101 1"
64
- [relaton-bipm] ("BIPM CIPM101 1") fetching...
65
- [relaton-bipm] ("BIPM CIPM101 1") found CIPM101-1
66
- => #<RelatonBipm::BipmBibliographicItem:0x00007f9e9293d658
63
+ RelatonBipm::BipmBibliography.get "BIPM PV 101(I)"
64
+ [relaton-bipm] ("BIPM PV 101(I)") fetching...
65
+ [relaton-bipm] ("BIPM PV 101(I)") found BIPM PV 101(I)
66
+ => #<RelatonBipm::BipmBibliographicItem:0x00007fd5072301c0
67
67
  ...
68
68
  ----
69
69
 
@@ -42,6 +42,7 @@ module RelatonBipm
42
42
  def get_bipm(ref, agent)
43
43
  url = "#{GH_ENDPOINT}#{ref.upcase.split.join '-'}.yaml"
44
44
  resp = agent.get url
45
+ check_response resp
45
46
  return unless resp.code == "200"
46
47
 
47
48
  bib_hash = HashConverter.hash_to_bib YAML.safe_load(resp.body, [Date])
@@ -67,6 +68,7 @@ module RelatonBipm
67
68
  def get_journal(agent)
68
69
  url = "#{IOP_DOMAIN}/journal/0026-1394"
69
70
  rsp = agent.get url
71
+ check_response rsp
70
72
  rel = rsp.xpath('//select[@id="allVolumesSelector"]/option').map do |v|
71
73
  { type: "partOf", bibitem: journal_rel(v) }
72
74
  end
@@ -88,6 +90,7 @@ module RelatonBipm
88
90
  def get_volume(vol, agent)
89
91
  url = "#{IOP_DOMAIN}/volume/0026-1394/#{vol}"
90
92
  rsp = agent.get url
93
+ check_response rsp
91
94
  rel = rsp.xpath('//li[@itemprop="hasPart"]').map do |i|
92
95
  { type: "partOf", bibitem: volume_rel(i, vol) }
93
96
  end
@@ -116,9 +119,10 @@ module RelatonBipm
116
119
  # @param ish [String]
117
120
  # @param agent [Mechanize]
118
121
  # @return [RelatonBipm::BipmBibliographicItem]
119
- def get_issue(vol, ish, agent) # rubocop:disable Metrics/AbcSize
122
+ def get_issue(vol, ish, agent) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
120
123
  url = issue_url vol, ish
121
124
  rsp = agent.get url
125
+ check_response rsp
122
126
  rel = rsp.xpath('//div[@class="art-list-item-body"]').map do |a|
123
127
  { type: "partOf", bibitem: issue_rel(a, vol, ish) }
124
128
  end
@@ -199,6 +203,7 @@ module RelatonBipm
199
203
  def get_article_from_issue(vol, ish, art, agent)
200
204
  url = issue_url vol, ish
201
205
  rsp = agent.get url
206
+ check_response rsp
202
207
  get_article rsp.at("//div[@class='indexer'][.='#{art}']/../div/a")[:href], vol, ish, agent
203
208
  end
204
209
 
@@ -209,9 +214,11 @@ module RelatonBipm
209
214
  # @return [RelatonBipm::BipmBibliographicItem]
210
215
  def get_article(path, vol, ish, agent) # rubocop:disable Metrics/AbcSize
211
216
  rsp = agent.get path
217
+ check_response rsp
212
218
  url = rsp.uri
213
219
  bib = rsp.link_with(text: "BibTeX").href
214
220
  rsp = agent.get bib
221
+ check_response rsp
215
222
  bt = BibTeX.parse(rsp.body).first
216
223
  bibitem(docid: btdocid(bt), title: titles(bt.title.to_s), abstract: btabstract(bt), doctype: bt.type.to_s,
217
224
  link: btlink(bt, url), date: btdate(bt), contributor: btcontrib(bt), series: series,
@@ -293,6 +300,26 @@ module RelatonBipm
293
300
  def get(ref, year = nil, opts = {})
294
301
  search(ref, year, opts)
295
302
  end
303
+
304
+ private
305
+
306
+ #
307
+ # Check HTTP response. Warn and rise error if response is not 200
308
+ # or redirect to CAPTCHA.
309
+ #
310
+ # @param [Mechanize] rsp response
311
+ #
312
+ # @raise [RelatonBib::RequestError] if response is not 200
313
+ #
314
+ def check_response(rsp) # rubocop:disable Metrics/AbcSize
315
+ if rsp.code == "302"
316
+ warn "[relaton-bipm] #{rsp.uri} is redirected to #{rsp.header['location']}"
317
+ raise RelatonBib::RequestError, "redirected to #{rsp.header['location']}"
318
+ elsif rsp.code != "200"
319
+ warn "[read_bipm] can't acces #{rsp.uri} #{rsp.code}"
320
+ raise RelatonBib::RequestError, "can't acces #{rsp.uri} #{rsp.code}"
321
+ end
322
+ end
296
323
  end
297
324
  end
298
325
  end
@@ -1,3 +1,3 @@
1
1
  module RelatonBipm
2
- VERSION = "1.10.1".freeze
2
+ VERSION = "1.10.2".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-bipm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.10.1
4
+ version: 1.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-09 00:00:00.000000000 Z
11
+ date: 2022-02-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug