jalc 1.1.0 → 2.0.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: 0dc45fa2ad1bb26e588c4b99dcd4b79ce9ef6eb1b1ce758fc241b1aefcf553a1
4
- data.tar.gz: 4ab4bd89829b7ad3af731359e9bf0424585e2991255e4a6e29564991937d94d5
3
+ metadata.gz: b5112d02828c77713d27f6f817b8360b2ba4d7f494116e6e29c7c838a467f612
4
+ data.tar.gz: c2e4c484221e81cbcc41538a7773a61aab622ce9c463a5887897f71fafc92373
5
5
  SHA512:
6
- metadata.gz: b105bfbf4b983932942144f965d45016ed7d64df42448d425ac94d53479f030f9ddd9bbbc3bdfcb5951fc13365233cdb888fe04478a377caba897d9f5f5e6feb
7
- data.tar.gz: 3465ba5121e720647d40f0dca8b8060990736ea0d712a06b0d6f926a5700966a731f28a1382c84562246498c188b0c22b9ba5d0c01384d27bb2a225e94735bfd
6
+ metadata.gz: 164852ecb1e72be40a39e609a055de250a3d69446a317ca71a76ae9895c7003c2215b1bdd3a65b1c9a72faffe91247cfdb160e640acce4cf2de5d43a4d5056dd
7
+ data.tar.gz: 6ef81e529ec75c794a66605698a5aadb2c632fe2149df97d7b1f237c488bf9348e09c7757af376c17a4348bd2c95004fd7c5556c484e6985ef035b31faf8b165
data/CHANGELOG.md CHANGED
@@ -1,8 +1,22 @@
1
1
  ## [Unreleased]
2
2
 
3
- ## [1.1.0] - 2022-01-10
3
+ ## [2.0.1] - 2022-03-06
4
4
 
5
- - Add JaLC::Registration for the registration API
5
+ - Make the registration error messages Japanese
6
+
7
+ ## [2.0.0] - 2022-01-10
8
+
9
+ - Change the return values from `Faraday::Response` to its `#body`
10
+
11
+ ## [1.2.0] - 2022-01-10
12
+
13
+ - Filter password on logs
14
+ - Remove `NilStatusError`
15
+ - Create `jalc.rbs`
16
+
17
+ ## [1.1.0] - 2022-01-09
18
+
19
+ - Add `JaLC::Registration` for the registration API
6
20
 
7
21
  ## [1.0.0] - 2022-01-09
8
22
 
data/Gemfile CHANGED
@@ -7,6 +7,7 @@ gemspec
7
7
 
8
8
  gem 'debug'
9
9
  gem 'rake'
10
+ gem 'rbs'
10
11
  gem 'rspec'
11
12
  gem 'rubocop'
12
13
  gem 'rubocop-rake'
data/README.md CHANGED
@@ -31,15 +31,15 @@ JaLC::REST.config.logger = MyLogger.new
31
31
 
32
32
  # GET /prefixes
33
33
  prefixes_res = JaLC::REST.prefixes(ra: 'JaLC', sort: 'siteId', order: 'desc')
34
- prefix = prefixes_res.body['data']['items'].first['prefix'] #=> 10.123
34
+ prefix = prefixes_res['data']['items'].first['prefix'] #=> "10.123"
35
35
 
36
36
  # GET /doilist/:prefix
37
37
  doilist_res = JaLC::REST.doilist(prefix, rows: 100)
38
- doi = doilist_res.body['data']['items'].last['dois']['doi'] #=> 10.123/abc
38
+ doi = doilist_res['data']['items'].last['dois']['doi'] #=> "10.123/abc"
39
39
 
40
40
  # GET /dois/:doi
41
41
  doi_res = JaLC::REST.doi(doi)
42
- doi_res.body['data']
42
+ doi_res['data']
43
43
  ```
44
44
 
45
45
  ### JaLC Registration API
@@ -52,28 +52,29 @@ require 'jalc'
52
52
  JaLC::Registration.configure do |config|
53
53
  config.id = 'sankichi92'
54
54
  config.password = ENV['JALC_PASSWORD']
55
+ config.logger = nil
55
56
  end
56
57
 
57
- res = JaLC::Registration.post(File.open('/path/to/xml'))
58
- # response.body is an instance of REXML::Document
59
- res.body.root.elements['head/okcnt'].text #=> 1
58
+ res = JaLC::Registration.post(File.open('/path/to/xml')) # returns a REXML::Document
59
+ res.root.elements['head/okcnt'].text #=> "1"
60
60
 
61
- # With XML head/result_method=2 (Async)
61
+ # async registration (result_method=2)
62
62
  async_res = JaLC::Registration.post(StringIO.new(<<~XML))
63
63
  <?xml version="1.0" encoding="UTF-8"?>
64
64
  <root>
65
65
  <head>
66
66
  <result_method>2</result_method>
67
+ <!-- ... -->
67
68
  </head>
68
69
  <body>
69
- ...
70
+ <!-- ... -->
70
71
  </body
71
72
  </root>
72
73
  XML
73
- exec_id = async_res.body.root.elements['head/exec_id'].text #=> 12345
74
+ exec_id = async_res.root.elements['head/exec_id'].text #=> "12345"
74
75
 
75
76
  result_res = JaLC::Registration.get_result(exec_id)
76
- res.body.root.elements['head/status'].text
77
+ result_res.root.elements['head/status'].text #=> "2"
77
78
  ```
78
79
 
79
80
  ## Development
data/jalc.gemspec CHANGED
@@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
32
32
  # Uncomment to register a new dependency of your gem
33
33
  spec.add_dependency 'faraday', '>= 1.0', '< 3.0'
34
34
  spec.add_dependency 'faraday-multipart', '~> 1.0'
35
+ spec.add_dependency 'rexml', '~> 3.0'
35
36
 
36
37
  # For more information and examples about making a new gem, check out our
37
38
  # guide at: https://bundler.io/guides/creating_gem.html
@@ -20,7 +20,7 @@ module JaLC
20
20
  end
21
21
 
22
22
  def post(xml_file)
23
- conn.post(
23
+ response = conn.post(
24
24
  '/jalc/infoRegistry/registDataReceive/index',
25
25
  {
26
26
  login_id: Faraday::Multipart::ParamPart.new(@id, 'text/plain'),
@@ -28,10 +28,11 @@ module JaLC
28
28
  fname: Faraday::Multipart::FilePart.new(xml_file, 'text/xml'),
29
29
  },
30
30
  )
31
+ response.body
31
32
  end
32
33
 
33
34
  def get_result(exec_id)
34
- conn.get(
35
+ response = conn.get(
35
36
  '/jalc/infoRegistry/registDataResult/index',
36
37
  {
37
38
  login_id: @id,
@@ -39,6 +40,7 @@ module JaLC
39
40
  exec_id: exec_id,
40
41
  },
41
42
  )
43
+ response.body
42
44
  end
43
45
 
44
46
  private
@@ -52,7 +54,11 @@ module JaLC
52
54
  f.use Middleware::RaiseError
53
55
  f.use Middleware::ParseXML
54
56
  f.response :raise_error
55
- f.response :logger, @logger, { headers: false } if @logger
57
+ if @logger
58
+ f.response :logger, @logger, { headers: false } do |logger|
59
+ logger.filter(/(password=)\w+/, '\1[FILTERED]')
60
+ end
61
+ end
56
62
  end
57
63
  end
58
64
  end
@@ -7,7 +7,7 @@ module JaLC
7
7
  module Middleware
8
8
  class ParseXML < Faraday::Middleware
9
9
  def on_complete(env)
10
- env[:body] = REXML::Document.new(env[:body].to_s)
10
+ env.body = REXML::Document.new(env.body.to_s)
11
11
  end
12
12
  end
13
13
  end
@@ -12,11 +12,11 @@ module JaLC
12
12
  case env.body.root.elements['head/errcd']&.text
13
13
  when '*'
14
14
  raise AuthenticationError,
15
- 'Wrong login_id/login_password or non-registered IP address request (errcd=*)'
15
+ 'IDとパスワードの組合せが間違っているか、アクセス元のIPアドレスがJaLCに登録されているIPアドレスと異なっている可能性があります (errcd=*)'
16
16
  when '#'
17
- raise InvalidXMLError, 'XML format is invalid or any required params are blank (errcd=#)'
17
+ raise InvalidXMLError, 'XMLファイルの構造に誤りがあるか、login_id、login_passwd、fnameのパラメータに未設定のものがある可能性があります (errcd=#)'
18
18
  when '+'
19
- raise RegistrationError, 'Non-XML file, non UTF-8 encoding or other error (errcd=+)'
19
+ raise RegistrationError, 'fnameで指定したファイルがXMLファイルでないか、XMLファイルの文字コードがUTF-8でない可能性があります (errcd=+)'
20
20
  end
21
21
  end
22
22
  end
@@ -18,7 +18,7 @@ module JaLC
18
18
  end
19
19
 
20
20
  def prefixes(ra: nil, sort: nil, order: nil)
21
- conn.get(
21
+ response = conn.get(
22
22
  '/prefixes',
23
23
  {
24
24
  ra: ra,
@@ -26,10 +26,11 @@ module JaLC
26
26
  order: order,
27
27
  }.compact,
28
28
  )
29
+ response.body
29
30
  end
30
31
 
31
32
  def doilist(prefix, from: nil, to: nil, rows: nil, page: nil, sort: nil, order: nil)
32
- conn.get(
33
+ response = conn.get(
33
34
  "/doilist/#{prefix}",
34
35
  {
35
36
  from: from,
@@ -40,11 +41,13 @@ module JaLC
40
41
  order: order,
41
42
  }.compact,
42
43
  )
44
+ response.body
43
45
  end
44
46
 
45
47
  def doi(doi)
46
48
  encoded_doi = URI.encode_www_form_component(URI.encode_www_form_component(doi))
47
- conn.get("/dois/#{encoded_doi}")
49
+ response = conn.get("/dois/#{encoded_doi}")
50
+ response.body
48
51
  end
49
52
 
50
53
  private
@@ -16,13 +16,8 @@ module JaLC
16
16
  raise ResourceNotFound.new(response: response_values(env))
17
17
  when 400...500
18
18
  raise ClientError.new(response: response_values(env))
19
- when 500...600
19
+ when 500...600, nil
20
20
  raise ServerError.new(response: response_values(env))
21
- when nil
22
- raise NilStatusError.new(
23
- 'http status could not be derived from the server response',
24
- response: response_values(env),
25
- )
26
21
  end
27
22
  end
28
23
 
@@ -68,6 +63,5 @@ module JaLC
68
63
  class BadRequestError < ClientError; end
69
64
  class ResourceNotFound < ClientError; end
70
65
  class ServerError < HTTPError; end
71
- class NilStatusError < ServerError; end
72
66
  end
73
67
  end
data/lib/jalc/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JaLC
4
- VERSION = '1.1.0'
4
+ VERSION = '2.0.1'
5
5
  end
data/sig/jalc.rbs ADDED
@@ -0,0 +1,89 @@
1
+ module JaLC
2
+ interface _Logger
3
+ end
4
+
5
+ VERSION: String
6
+
7
+ module Registration
8
+ BASE_URL: String
9
+
10
+ def self.configure: { (Config) -> void } -> void
11
+ def self.config: -> Config
12
+
13
+ class Error < StandardError
14
+ end
15
+
16
+ class RegistrationError < Error
17
+ end
18
+
19
+ class AuthenticationError < RegistrationError
20
+ end
21
+
22
+ class InvalidXMLError < RegistrationError
23
+ end
24
+
25
+ class Client
26
+ interface _IO
27
+ end
28
+ type rexml_document = untyped
29
+
30
+ def initialize: (id: String, password: String, ?logger: _Logger?, ?base_url: String) -> void
31
+ def post: (_IO xml_file) -> rexml_document
32
+ def get_result: (Integer | String exec_id) -> rexml_document
33
+ end
34
+
35
+ class Config
36
+ attr_accessor id: String?
37
+ attr_accessor password: String?
38
+ attr_accessor logger: _Logger?
39
+
40
+ def initialize: -> void
41
+ end
42
+ end
43
+
44
+ module REST
45
+ type response_body = Hash[String, untyped] | String | nil
46
+
47
+ BASE_URL: String
48
+
49
+ def self.configure: { (Config) -> void } -> void
50
+ def self.config: -> Config
51
+
52
+ class Error < StandardError
53
+ end
54
+
55
+ class HTTPError < Error
56
+ type response_hash = {status: Integer, headers: Hash[String, String], body: response_body, request: {method: Symbol, url: URI, headers: Hash[String, String], body: String?}}
57
+
58
+ attr_reader response: response_hash?
59
+
60
+ def initialize: (?String? msg, ?response: response_hash?) -> void
61
+ def inspect: -> String
62
+ end
63
+
64
+ class ClientError < HTTPError
65
+ end
66
+
67
+ class BadRequestError < ClientError
68
+ end
69
+
70
+ class ResourceNotFound < ClientError
71
+ end
72
+
73
+ class ServerError < HTTPError
74
+ end
75
+
76
+ class Client
77
+ def initialize: (?logger: _Logger?, ?base_url: String) -> void
78
+ def prefixes: (?ra: String?, ?sort: String?, ?order: String?) -> response_body
79
+ def doilist: (String prefix, ?from: String?, ?to: String?, ?rows: Integer? | String?, ?page: Integer? | String?, ?sort: String?, ?order: String?) -> response_body
80
+ def doi: (String doi) -> response_body
81
+ end
82
+
83
+ class Config
84
+ attr_accessor logger: _Logger?
85
+
86
+ def initialize: -> void
87
+ end
88
+ end
89
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jalc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takahiro Miyoshi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-09 00:00:00.000000000 Z
11
+ date: 2022-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
46
  version: '1.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: rexml
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.0'
47
61
  description:
48
62
  email:
49
63
  - takahiro-miyoshi@sankichi.net
@@ -75,7 +89,7 @@ files:
75
89
  - lib/jalc/rest/error.rb
76
90
  - lib/jalc/rest/middleware/raise_error.rb
77
91
  - lib/jalc/version.rb
78
- - sig/jalc/rest.rbs
92
+ - sig/jalc.rbs
79
93
  homepage: https://github.com/sankichi92/jalc-ruby
80
94
  licenses:
81
95
  - MIT
@@ -100,7 +114,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
114
  - !ruby/object:Gem::Version
101
115
  version: '0'
102
116
  requirements: []
103
- rubygems_version: 3.3.3
117
+ rubygems_version: 3.3.7
104
118
  signing_key:
105
119
  specification_version: 4
106
120
  summary: JaLC (Japan Link Center) API Client
data/sig/jalc/rest.rbs DELETED
@@ -1,6 +0,0 @@
1
- module JaLC
2
- module REST
3
- VERSION: String
4
- # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
- end
6
- end